第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。
