经典js面试题:数组去重

1,025 阅读1分钟

数组去重

数组去重作为js的经典面试题,比较考察js基础,在实际应用中也有较多的场景。

常规方法

  • 利用对象属性
  function oSort( arr ) {
                 var result = {};
                 var newArr = [];
                 for (var i = 0 ; i < arr.length; i ++ ) {
                       if (! result[arr[i]]) {
                           newArr.push(arr[i]);
                           result[arr[i]] = 1;
                       }
                }
                 return newArr;
     }
  • 利用传入数组查询值指针是否为自己
      function oSort2( arr ) {
                 var n = [];
                 for (var i = 0 ; i <arr.length; i ++ ) {
                       if (arr.indexOf(arr[i])== i) {
                           n.push(arr[i]);
                      }
                }
                 return n;
           }
  • 查找返回数组查询值是否存在
   function oSort3 ( arr ) {
                 var n = [];
                 for (var i = 0 ; i <arr.length; i ++ ) {
                       if (n.indexOf(arr[i])<0 ) {
                           n.push(arr[i]);
                      }
                }
                 return n;
       }

es6拓展

  • set ,本身数据结构为非重复数组

const unique = arr => {
    return [...new Set(arr)]
}

  • filter ,支持数组过滤
const unique = arr => {
    return arr.filter((ele, index, array) => {
        return index === array.indexOf(ele)
    })
}