JavaScript 数组去重

版权声明:版权声明:@BU-KX-Z 本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41539580/article/details/82529340

JavaScript 数组去重

方法:在原型链上编写,利用对象的属性不能相同的特点进行去重,把数组的属性值添加为对象的属性名(一个对象不能有两个同名的属性)。
代码实现:

// 在原型链封装一个方法
Array.prototype.unique = function () {
    var temp = [], // 空数组
        obj = {},  // 空对象
        len = this.length; // 定义一个变量接收调用数组的length值。(作用:减少循环运算)
    // 循环遍历数组
    for(var i = 0; i < len; i ++) { 
        // 判断对象里面有没有这个属性,值取反,为true执行代码块,为false跳过,执行下一次循环,去除重复。
        if(!obj[this[i]]) {
            // 把数组属性值添加为对象属性名,并给对象属性名赋值(注:对象属性不要为0或this[i])
            obj[this[i]] = "Hello World!!!";
            // 在temp里面添加数据
            temp.push(this[i]);
        }
    }
    return temp; // 返回这个数组
};

调用这个方法:
用一个超级数组去测试

var newArr = [1,  2, 3, 5, 3, 1, 5, 6, 7, 4, 1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4, 1, 1, 2, 3, 5, 3, 1, 
6, 7, 4, 1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4, 1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4, 1, 1, 2, 3, 5, 3, 1, 5,
 6, 7, 4, 8, "a", "b", "c", "b", "a", "c", "a", "b", "a", "b", "c", "b", "a", "c", "c", "a", "b", 
"c","b", "a", "c", "c", "a", "b"]

Array.prototype.unique = function () {
            var temp =  {};
            var arr = [];
            var len = this.length
            for(var i = 0; i < len; i ++) {
                if(!temp[this[i]]) {
                    temp[this[i]] = "abc";
                    arr.push(this[i]);
                }
            }
            return arr;
        }

console.log(newArr.unique());

结果为:
去重前:
前
去重后:
后

以上就是小编对javascript数组去重问题的研究,今后会不断改进代码。

猜你喜欢

转载自blog.csdn.net/weixin_41539580/article/details/82529340