js 数组去重总结

栏目: JavaScript · 发布时间: 6年前

内容简介: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 数组去重总结》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

RESTful Web Services Cookbook

RESTful Web Services Cookbook

Subbu Allamaraju / Yahoo Press / 2010-3-11 / USD 39.99

While the REST design philosophy has captured the imagination of web and enterprise developers alike, using this approach to develop real web services is no picnic. This cookbook includes more than 10......一起来看看 《RESTful Web Services Cookbook》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具