当前位置:首页 > js 数组去重 javascript 数组去重

js 数组去重 javascript 数组去重

发布于 2018-04-17 阅读 480 次 Javascript

数组的排序去重

方法一:

function delSame(arr){
    var noSame = [];
    var obj = {};
    for(var i=0;i<arr.length;i++){
        if(!obj[arr[i]]){
            obj[arr[i]] = i;
            noSame[i]=arr[i];
        }
    }
    return noSame;
}

方法二:

function delSame(arr){
    var noSame = [];
    for(var i=0;i<arr.length;i++){
        for(var j=i+1;j<arr.length;j++){
            if(arr[i]===arr[j]){
                continue;
            }else{
                noSame[i] = arr[i];
            }
        }
    }
}

方法三:

function delSame(){

    var result = [];
    arr.forEach(function(v, i ,arr){
        var bool = arr.indexOf(v,i+1);
        if(bool === -1){
            result.push(v);
        }
    })
    return result;
}

也可以不定义新数组直接用splice函数删除数组元素

方法四:

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
利用set可以得到一个没有重复值的数组

var arr = [1,23,44,4,5,1,23];
const set = new Set(arr);
var newArr = [...set]
//或者var newArr = Array.from(set);
console.log(newArr) // 1,23,44,4,5

一些值得注意的地方
对象和数组的比较永远是不想等的,所以如果数组里面还有两个空对象,如果你想只留一个以上的方法是不能去除的,我们可以使用,如果你由此方面的需求我们可以用JSON.stringify()来转化

JSON.stringify({}) == '{}'   // true
JSON.stringify([]) == '[]'   // true

splice用法

例如有一个数组

arr = [1,2,3,4,5]
arr.splice(1,1) //删除arr[1];
//1345
arr.splice(1,1,'q') //删除arr[1];替换成q
//1,q,3,4,5
arr.splice(1,0,'q') //向第一个元素的位置插入一个元素q
//1,q,2,3,4,5