如何实现JS数组去重

2019-07-1236次阅读javascript

例如:

uniq([1, 2, 3, 5, 3, 2]);//[1, 2, 3, 5]

1、利用ES6新增数据类型Set

Set类似于数组,但是成员的值都是唯一的,没有重复的值。

function uniq(arry){
    return [...new Set(arry) ];
}

2、利用indexOf

function uniq(arry){
    var result = [];
    for(var i = 0,len = arry.length; i < len;i++){
        if( result.indexOf(arry[i]) === -1 ){
            result.push(arry[i]);
        }
    }
    return result;
}

3、利用includes

function uniq(arry){
    var result = [];
    for(var i = 0,len = arry.length; i < len;i++){
        if( !result.includes(arry[i]) ){
            result.push(arry[i]);
        }
    }
    return result;
}

4、利用reduce

function uniq(arry){
    return arry.reduce( (prev,cur) => prev.includes(cur) ? prev : [...prev,cur],[] );
}

5、利用Map

function uniq(arry){
    let map = new Map();
    let result = [];
    for(var i = 0,len = arry.length; i < len;i++){
        if( map.has(arry[i]) ){
            map.set(arry[i],true);
        }else{
            map.set(arry[i],false);
            result.push(arry[i]);
        }
    }
    return result;

}

 

上一篇: ES5有几种方式可以实现继承?分别有哪些优缺点?  下一篇: CSS选择器链或组中出现无效的伪选择器会怎样  

如何实现JS数组去重相关文章