JS面试算法题

数组快速排序

function quiktSort(arr){
  let left =[];
  let right=[];
  if(arr.length<1){
    return  arr;
  }
  // 求数组的长度的一半
  const index = Math.floor(arr.length/2);
  // 截取,取数组的最中间的一个元素
  const point = arr.splice(index,1);
  for(var i=0,len=arr.length;i

数组去重

// 如果数组的第i项,第一次出现的位置不是在下标i,那么这个元素就是重复出现
function arrNoRepeat1(arr){
  let new_arr = [];
  for(let i = 0,len = arr.length;i < len;i ++){
    // 如果数组的第i项,第一次出现的位置不是在下标i,那么这个元素就是重复出现了。
    if(arr.indexOf(arr[i]) === i){
      new_arr.push(arr[i]);
    }
  }
  // console.log(new_arr);
  return new_arr;
}
console.log(arrNoRepeat1([1,11,12,22,12,44,3,22,4,1,5,3]))
// ES6新增构造函数Set,Set中的元素是唯一的
let arr = [4,1,2,2,3,2,1,4,4];
// set 天然去重
let set = new Set(arr);
console.log(arr);
console.log(set);
console.log(...set);
console.log([...set]);
// 遍历旧数组,然后再新数组中查找对应元素的下标,找不到对应的元素,
// 返回-1,说明新数组中没有该元素,则放入新数组。
let arr_new = [];
  for(let i = 0,len = arr.length;i < len;i ++){
  //indexOf(元素) 查找对应元素的下标,找到返回找到的元素,找不到返回-1
  if(arr_new.indexOf(arr[i]) === -1){
    arr_new.push(arr[i]);
  }
}
console.log(arr_new);

你可能感兴趣的:(JS面试算法题)