JavaScrip数组去重--终极版

第一种

var arr = [1,2,3,4,1,2,4,5,6];
console.log(arr); Array.prototype.unique
= function() { var n = []; //一个新的临时数组 for (var i = 0; i < this.length; i++) //遍历当前数组 { //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(this[i]) == -1) n.push(this[i]); } return n; }; console.log(arr.unique());

第二种

var arr = [1,2,3,4,1,2,4,5,6];
console.log(arr);
Array.prototype.unique = function()
{
    var n = {},
        r = []; //n为hash表,r为临时数组
    for (var i = 0; i < this.length; i++) { //遍历当前数组
        if (!n[this[i]]) { //如果hash表中没有当前项
            n[this[i]] = true; //存入hash表
            r.push(this[i]); //把当前数组的当前项push到临时数组里面
        }
    }
    return r;
};
console.log(arr.unique());

第三种

var arr = [1,2,3,4,1,2,4,5,6];
console.log(arr);
Array.prototype.unique = function(){
    var n = [this[0]]; //结果数组
    for (var i = 1; i < this.length; i++) //从第二项开始遍历
    {
        //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
        //那么表示第i项是重复的,忽略掉。否则存入结果数组
        if (this.indexOf(this[i]) == i) n.push(this[i]);
    }
    return n;
};
console.log(arr.unique());
原文地址:https://www.cnblogs.com/liu-fei-fei/p/6689667.html