整理了下数组去重的方法
第一种
function noRepeat1(arr) { var result = [], hash = {}; var newArry=arr.sort(function(num1,num2){return num1-num2;}); for (var i = 0, elem; (elem = newArry[i]) != null; i++) { if (!hash[elem]) { result.push(elem); hash[elem] = true; } } return result; }
第二种
function noRepeat2(arr) { var temp="",Arry=[]; var newArry=arr.sort(function(num1,num2){return num1-num2;}); for (var i = 0; i < newArry.length; i++) { if(newArry[i]!=temp){ temp=newArry[i]; Arry.push(temp); } else{ continue; } }; return Arry; }
第一二种类似搬运比较的过程,比较好理解。下面第三种思维比较奇特,将原数组存在另一个对象的键值,输出的数组是字符串数组。
function noRepeat3(data){ var a = {}; for (var i=0; i<data.length; i++) { var v = data[i]; if (typeof(a[v]) == 'undefined'){ a[v] = 1; } }; data.length=0; for (var i in a){ data[data.length] = i; } return data; }