新睿云

> 知识库 > 数组去重4种有效方法

数组去重4种有效方法

作者/来源:新睿云小编 发布时间:2020-06-17

面试中或者开发经常会问到数组去重,小睿整理了4种方法。

var arr = [1, 1, '1', '1', 'true', 'true', true, true, null, null, undefined, undefined, NaN, NaN, {'a': 1}, {'a': 1}]

1. ES6去重

{}不能去重

 

Array.from(new Set(arr))

// (9) [1, "1", "true", true, null, undefined, NaN, {…}, {…}]

2.双重遍历去重

{}、NaN不能去重,可做特殊操作实现

 

function unique(arr = []) {

  for(let i = 0; i < arr.length; i++) {

    for(let j = i + 1; j < arr.length; j++) {

      if(arr[i] === arr[j]) {

        debugger;

        arr.splice(j, 1);

        j--;

      }

    }

  }

}

// (10) [1, "1", "true", true, null, undefined, NaN, NaN, {…}, {…}]

3. indexOf 或者 includes 去重

需要注意的是 includes 可以去除NaN,而 indexOf 不可以。

 

arr.indexOf(NaN) === -1

 

function unique(arr = []) {

  let newArr = [];

  for(let i = 0; i < arr.length; i++) {

    debugger;

    if(!newArr.includes(arr[i]) || newArr.indexOf(arr[i]) === -1) {

      newArr.push(arr[i]);

    }

  }

  return newArr;

}

// (10) [1, "1", "true", true, null, undefined, NaN, NaN, {…}, {…}]

4. filter去重

原理:indexOf只会返回在数组中第一次出现的元素位置

 

arr.filter((item, index, arr) => {

  return arr.indexOf(item) === index;

})

(8) [1, "1", "true", true, null, undefined, {…}, {…}]


热门标签
new year
在线咨询
咨询热线 400-1515-720
投诉与建议
{{item.description}}

—您的烦恼我们已经收到—

我们会将处理结果发送至您的手机

请耐心等待