js数组去重

59 阅读1分钟

一个老生常淡的js基础问题,根据自己的理解,再次整理一下

1.双重for循环
function ArrayDeduplication(arr){
  for(let i = 0; i < arr.length; i++){
    for(let j = i + 1; j < arr.length; j++){
      //判断前后两个值是否相同,如相同,则去掉
      if(arr[i] === arr[j]){
        arr.splice(j,1)
      }
    }
  }
  return arr
}
2.新数组 + indexOf
function ArrayDeduplication2(arr){
  // 新建一个数组
  let newArr = []
  // 遍历原数组
  arr.forEach((item) => {
    // 判断新数组中是否有原数组中的值
    // 如果没有,则添加
    if(newArr.indexOf(item) === -1){
      newArr.push(item)
    }
  });
  return newArr
}
3. filter + indexOf
function ArrayDeduplication3(arr){
  // 通过filter函数过滤,数组的indexOf与当前的索引是否一致
  // 如一致,则过滤掉
  let newArr = arr.filter((item,index) => arr.indexOf(item) === index)
  return newArr
}
4.es6新方法
function ArrayDeduplication4(arr){
  // es6新增的方法
  // 也可以
  // return Array.from(new Set(arr))
  return [...new Set(arr)]
}