摘要:目前有以下几种方法可以实现数组中元素去重遍历数组一个一个进行比较利用实现,在扩展运算符提供了新的数据结构。它类似于数组,但是成员的值都是唯一的,没有重复的值。
目前有以下几种方法可以实现数组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...
上查看
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/97710.html
摘要:而数组元素去重是基于运算符的。而如果有迭代函数,则计算传入迭代函数后的值,对值去重,调用方法,而该方法的核心就是调用方法,和我们上面说的方法一异曲同工。 Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中。 阅读一些著名框架类库的源码,就好像...
摘要:种常用数组去重第一种两个循环思路新建一个为空的结果数组外层遍历原数组,内层循环遍历返回数组判断内层循环数组当前元素和外层数组元素的值是否相等,是退出内层循环经过第二部后,此时内层循环数组的索引值和返回数组的长度正好相等,外层数组元素也是唯一 8 种常用数组去重 第一种 【两个 for 循环】 思路: 新建一个为空的结果数组 外层 for 遍历原数组,内层循环遍历返回数组 判断内层循环...
摘要:数组去重双层循环使用双层嵌套循环是最原始的方法用来存储结果如果是唯一的,那么执行完循环,等于外层循环内层循环当和相等时,跳出循环。否则说明元素唯一,这时成立,将此元素添加到中。它类似于数组,但是成员的值都是唯一的,没有重复的值。 JavaScript数组去重 双层循环 使用双层嵌套循环是最原始的方法: var array = [a,b,a]; function unique(arra...
阅读 739·2021-11-23 09:51
阅读 800·2021-11-23 09:51
阅读 2484·2021-11-15 18:01
阅读 3841·2021-10-11 11:07
阅读 2380·2021-09-22 15:30
阅读 1057·2021-09-22 14:59
阅读 1512·2019-08-30 15:55
阅读 1734·2019-08-30 15:52