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