第一种:indexOf方法
function unique(arr){ var tmpArr = []; for(var i=0; i<arr.length; i++){ if(tmpArr.indexOf(arr[i]) == -1){ // ==i也是一种方案 tmpArr.push(arr[i]); } } return tmpArr; }
[1,2,3,"3"]
第二种:hash
function unique(arr){ var tmpArr = [], hash = {}; for(var i=0;i<arr.length;i++){ if(!hash[arr[i]]){ hash[arr[i]] = true; tmpArr.push(arr[i]); } } return tmpArr; }
还是跟第一种有区别的。
[1,2,3]
第三种:排序
function unique(array){ array.sort(); var re=[array[0]]; for(var i = 1; i < array.length; i++){ if( array[i] !== re[re.length-1]){ re.push(array[i]); } } return re; }
[1,2,3,"3"]
第四种:ES5+ES6
function unique(arr){ var obj = {}; arr.forEach(function(item,index) { obj[item] = 1 }) return Object.keys(obj); }
["1","2","3"]
第五种:ES6
Array.from(new Set([2,3,3,4,5]))
[1,2,3,"3"]
第六种:ES6
[...new Set([2,3,3,4,5])]
[1,2,3,"3"]
声明: 本文由( zongyan86 )原创编译,转载请保留链接: 答案是丰富多彩的系列6:数组去重