/** 数组去重*/ Set ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set本身是一个构造函数,用来生成Set数据结构。#####去除数组重复元素 [...new Set(array)] Array.from(new Set(array)); eg: /** es6数组去重 */ uniqueArr(arr) { var x = new Set(arr); return [...x]; }, #####非es6去重1、时间复杂度o(n) function fn(arr) { let obj = {}; arr.forEach((item) = >{ obj[item] = ''; //只保存最后出现的键为准,从而去重 }) return Object.keys(obj) } 2、时间复杂度o(n * n) function fn(arr) { return arr.filter((item, index, arr) = >arr.indexOf(item) === index) //第一次出现的的元素下标才等于下标 } /** 数组去重*/ 七、 for...of + Object[最佳] 这个方法我只在一些文章里见过,实际工作中倒没怎么用 首先创建一个空对象,然后用 for循环遍历 利用对象的属性不会重复这一特性,校验数组元素是否重复 function distinct(a, b) { let arr = a.concat(b) let result = [] let obj = {} for (let i of arr) { if (!obj[i]) { result.push(i) obj[i] = 1 } } return result }该方法的不足之处在于无法对NaN进行过滤,原因是 var a = [1, NaN, 2]; a.indexOf(NaN) === -1;,改善的方法是使用includes方法 function arr_unique4(arr) { var res = []; arr.forEach((val) = >{ if (!res.includes(val)) { res.push(val); } }); return res; } arr_unique4(arr); //(13) [1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, "a", {…}, {…}]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。