美文网首页
JS数组去重

JS数组去重

作者: Leonard被注册了 | 来源:发表于2019-11-15 10:42 被阅读0次

虽然没有一次面试遇到过这个题目,估计是考烂了不想考。。。但还是记录一下,毕竟知名度这么高的一个题目是吧?

1.双重for循环加splice()

function unique(arr){     
        if (!Array.isArray(arr)) {
            console.log('type error!')
            return;
        }       
        for(var i=0; i<arr.length; i++){
            for(var j=i+1; j<arr.length; j++){
                if(arr[i]==arr[j]){         
                    arr.splice(j,1);
                    j--;
                }
            }
        }
return arr;
}

2.includes()

function unique(arr) {
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return;
    }
    var newArr =[];
    for(var i = 0; i < arr.length; i++) {
            if(!array.includes(arr[i])) {
                  array.push(arr[i]);
            }
    }
    return newArr; 
}

3.indexOf()

function unique(arr) {
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return;
    }
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        if (array.indexOf(arr[i]) === -1) {
            array.push(arr[i])
        }
    }
    return newArr;
}

4.ES6中的Set()

function unique(arr){
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return;
    }
    return Array.from(new Set(arr));
}

5.sort()

function unique(arr){
  if (!Array.isArray(arr)) {
     console.log('type error!')
     return;
  }
  arr = arr.sort((a,b)=>a-b);
  var newArr = [arr[0]];
  var index = 0;
  for(var i = 1; i < arr.length; i++){
    if(newArr[index] === arr[i]) continue;
    index++;
    newArr.push(arr[i]);
  }
  return newArr;
}

6.hasOwnProperty()

function unique(arr) {
    if (!Array.isArray(arr)) {
     console.log('type error!')
     return;
    }
    var obj = {};
    return arr.filter(item => {
        return obj.hasOwnProperty(item) ? false : (obj[item] = true)
    })
}

7.filter()

function unique(arr) {
    if (!Array.isArray(arr)) {
     console.log('type error!')
     return;
    }
    return arr.filter((item,index) => {
      return arr.indexOf(item,0) === index;
    })
}

8.reduce()和includes()

function unique(arr) {
    if (!Array.isArray(arr)) {
     console.log('type error!')
     return;
    }
    return arr.reduce((pre,cur) => pre.includes(cur) ? pre : [...pre, cur],[])
}

9.递归去重

function unique(arr) {
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return;
    }
    arr.sort((a,b) => a - b);
    function loopFn(index){
      if(index > 0){
        if(arr[index] === arr[index-1]){
        arr.splice(index,1);
        }
        loopFn(index-1);
      }
    }
    loopFn(arr.length-1);
    return arr;
}

10.ES6中的Map数据结构

function unique(arr) {
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return;
    }
    let m = new Map();
    let newArr = [];
    for(let i = 0; i < arr.length; i++){
      if(m.has(arr[i])){
        m.set(arr[i],true);
        continue;
      }
      m.set(arr[i],false);
      newArr.push(arr[i]);
    }
  return newArr;
}

11.利用对象的特性

function unique(arr) {
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return
    }
    var newArr= [];
    var obj = {};
    for (var i = 0; i < arr.length; i++) {
        if (!obj[arr[i]]) {
            newArr.push(arr[i])
            obj[arr[i]] = 1
        } else {
            obj[arr[i]]++
        }
    }
    return newArr;
}

12.ES6中的展开运算符和Set()

function unique(arr){
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return;
    }
    return [...new Set(arr)]    // 去重,有时候就是这么简单
}

相关文章

  • 数组的去重和数组中对象的去重

    数组中对象去重 方式1 jq方式 方式2 原生js方式 普通数组的去重 方式1 普通的数组去重js 方式2 Se...

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • js数组去重

    Set结构去重 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 向 Se...

  • JS数组去重

    方法1:两层for循环,外层循环原数组,内层循环时进行比较。 方法2:利用对象的属性不能相同的特点去重 方法3:利...

  • js数组去重

  • js数组去重

    1.利用对象的属性唯一性去重 2.利用es6的Set

  • js数组去重

  • js 数组去重

  • JS数组去重

    方法一:遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 ...

  • js数组去重

    方法一 (es6 set方法,简单粗暴) 方法二 创建空数组,用indexOf方法检索,没有的话插入新数组中 方...

网友评论

      本文标题:JS数组去重

      本文链接:https://www.haomeiwen.com/subject/xikdictx.html