数组去重常用的一些办法和实现思路

1. ES6中Set数据结构数组进行去重

思路:利用es6新的数据结构Set的特性,和扩展运算符

[...new Set(array)]

2.利用数组的IndexOf方法或者includes方法

思路:indexOf为-1的时候,表示没有找到该值,再push进数组中

function unique4(arr) {
  var newArr = []
  for (var i = 0; i < arr.length; i++) {
    if (newArr.indexOf(arr[i])===-1) {
      newArr.push(arr[i])
    }
   }
  return newArr
        }
console.log(unique4([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]));
// 结果是[1, 2, 3, 5, 6, 7, 4]

3.双循环查找

思路:定义一个新的数组,并且存放原数组的第一个元素,然后一一比较新数组中的元素和旧数组中的元素算法相同

let arr = [1, 1, 1, 1, 9, 2, 2, 3, 4, 5, 5, 6, 6, 1, 2, 3, 9]

function sortArray(arr) {
    var newArr = [arr[0]]
    for (let i = 0; i < arr.length; i++) {
        var isDone = true
        for (let j = 0; j < newArr.length; j++) {
            if(arr[i]===newArr[j]) {
                isDone = false
                break;
            }
        }
        if(isDone) {
            newArr.push(arr[i])
        }
    }
    return newArr
}

console.log(sortArray(arr))
//[1, 9, 2, 3, 4, 5, 6]

4.对象属性唯一性

思路:利用对象属性存在的特性,如果没有该属性则存入新数组。

let arr = [1, 1, 1, 1, 9, 2, 2, 3, 4, 5, 5, 6, 6, 1, 2, 3, 9]

function unique3(arr) {
    var obj={}
    var newArr=[]
    for (let i = 0; i < arr.length; i++) {
        if (!obj[arr[i]]) {
            obj[arr[i]] = 1
            newArr.push(arr[i])
        }   
    }
    return newArr
}
console.log(unique3(arr));

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数组 知识汇总 前置知识: 数组是一个有序的数据集合,可使用数组名称和索引进行访问。 在JavaScript中数组...
    Daeeman阅读 701评论 1 7
  • 转载:在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总...
    七色烟火阅读 3,293评论 0 3
  • 关注 如何答一道惊艳面试官的数组去重问题? 为什么写这篇文章? 数组去重应该是面试必考问题之一。 虽然它是一道并不...
    冇得感情阅读 255评论 0 1
  • 前面的话   数组是一种基础的JS对象,随着时间推进,JS中的其他部分一直在演进,而直到ES5标准才为数组对象引入...
    CodeMT阅读 588评论 0 2
  • ECMAScript 6 入门这篇文章不错,下面的只是随手记。 块级作用域 能用let的地方,就不要用var,可以...
    松哥888阅读 790评论 0 2