数组去重的两种最常用方法

 

第1种 - 哈希法

复制代码
var arr = [0,0,1,2,4,3, 3, '3', '3', '我我', '我我', '啊'];
var uniqueHash = function (arr) {
    var res = [];
    var hash = {};
    arr.forEach(function (m) {
        if (!hash[m]) {
            res.push(m);
            hash[m] = true;
        }
    });
    return res;
};
console.log('hash', uniqueHash(arr));
复制代码

原理:遍历目标数组,创建一个hash对象将数组的值作为指针保存起来,如果已经存在就跳过,反之就把这个指针的值设置为true。

第2种 - 遍历法

复制代码
var arr = [0,0,1,2,4,3, 3, '3', '3', '我我', '我我', '啊'];
var uniqueKey = function (arr) {
    var res = [];
    arr.forEach(function (m, i) {
        if (m != res[res.length - 1]) {
            res.push(m)
        }
    });
    return res;
};

console.log('key', uniqueKey(arr));
复制代码

原理:遍历目标数组,然后push到一个空数组里面,再逐一对比新的数组里的每一个值,如果相等就跳过,反之就push。

原文地址:https://www.cnblogs.com/zhangxiaolei521/p/6669859.html