js 数组去重总结
栏目: JavaScript · 发布时间: 7年前
内容简介:ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。思路为map对象里没有数组元素的属性,就在map对象里添加数组元素的属性,并赋值为1,然后在过滤。通过判断第二层循环,去重的数组中是否含有该元素,如果有就退出第二层循环,如果没有j==result.length就相等,然后把对应的元素添加到最后的数组里面。
1、es6 set
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
let arr = [1,2,3,4,3,2,3,4,6,7,6]; let unique = (arr)=> [...new Set(arr)]; unique(arr);//[1, 2, 3, 4, 6, 7]
2、es6 map
思路为map对象里没有数组元素的属性,就在map对象里添加数组元素的属性,并赋值为1,然后在过滤。
let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr)=> {
let seen = new Map();
return arr.filter((item) => {
return !seen.has(item) && seen.set(item,1);
});
};
unique(arr);
3、for 双重循环
通过判断第二层循环,去重的数组中是否含有该元素,如果有就退出第二层循环,如果没有j==result.length就相等,然后把对应的元素添加到最后的数组里面。
let arr = [1,2,3,4,3,2,3,4,6,7,6];
let result = [];
for(var i = 0 ; i < arr.length; i++) {
for(var j = 0 ; j < result.length ; j++) {
if( arr[i] === result[j]){
break;
};
};
if(j == result.length){
result.push(arr[i]);
};
};
console.log(result);
4、indexOf
indexOf() 方法可返回某个指定的元素在数组中首次出现的位置。如果没有就返回-1。
let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr) => {
let result = [];
for( var i = 0 ; i < arr.length ; i++){
if(result.indexOf(arr[i]) == -1){
result.push(arr[i])
}
};
return result;
};
unique(arr);
5、indexOf filter
let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr) => {
return arr.filter((item,index) => {
return arr.indexOf(item) === index;
})
};
unique(arr);
6、 排序 后去重
先数组排序,然后判断是否是第一个元素并且前一个元素是否和后一个元素相同,不同就加进新数组
let arr = [1,2,3,4,3,2,3,4,6,7,6];
let unique = (arr) => {
let arrNew = arr.sort((a,b)=>a-b);
let seen,result = [];
for(var i = 0 ; i < arrNew.length ;i++){
if(!seen || seen != arrNew[i]){
result.push(arrNew[i]);
};
seen = arrNew[i]
};
return result;
};
unique(arr);
以上所述就是小编给大家介绍的《js 数组去重总结》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C程序设计(第四版)
谭浩强 / 清华大学出版社 / 2010-6-1 / 33.00元
由谭浩强教授著、清华大学出版社出版的《C程序设计》是一本公认的学习C语言程序设计的经典教材。根据C语言的发展和计算机教学的需要,作者在《C程序设计(第三版)》的基础上进行了修订。 《C程序设计(第4版)》按照C语言的新标准C99进行介绍,所有程序都符合C99的规定,使编写程序更加规范;对C语言和程序设计的基本概念和要点讲解透彻,全面而深入;按照作者提出的“提出问题―解决问题―归纳分析”三部曲......一起来看看 《C程序设计(第四版)》 这本书的介绍吧!
HTML 编码/解码
HTML 编码/解码
html转js在线工具
html转js在线工具