目前有以下几种方法可以实现数组arr中元素去重
let arr = [1, 2, 3, 4, 2, 3, 4]
-
遍历数组一个一个进行比较
let arr = [1, 2, 3, 4, 2, 3, 4]; let newarr = []; for(let i of arr){ if(newarr&&newarr.length == 0){ newarr.push(i); } let index = newarr.findIndex((value, index, arr)=>{ return i===value }); if(index < 0){ newarr.push(i); } } console.log( newarr);// [1, 2, 3, 4]
-
利用obj实现,在http://www.cnblogs.com/mmzuo-...
var array = [1, '1', 1, 2, 3, 2, 4]; var tmpObj = {}; var result = []; array.forEach(function(a) { var key = (typeof a) + a; if (!tmpObj[key]) { tmpObj[key] = true; result.push(a); } }); console.log(result);
-
扩展运算符(...) + set
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。向 Set 加入值的时候,不会发生类型转换,所以5和"5"是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,它类似于精确相等运算符(===),主要的区别是NaN等于自身,而精确相等运算符认为NaN不等于自身。let newArr = [...new Set(arr)] console.log(newArr);//[1, 2, 3, 4]
-
Array.from() + set
Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)let newArr = Array.from(new Set(arr)) console.log(newArr);//[1, 2, 3, 4]
还有很多中未写在上面,大家可以去
https://github.com/fung-yu/js...
上查看