第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。post
第2种 - 遍历法spa
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。指针