JS 如何删除二维数组的重复项?
数组 array=[["aa","bb","cc"],["aa","bb","cc"],["b","b","v"]]
删除后数组变为array2=[["aa","bb","cc"],["b","b","v"]]
上面的代码都不是最优雅的,关键在于你对js对象模型(JSON)的理解,如果能够和JAVA的HashMap联系起来,就容易理解了。
[code="javascript"]
var arr = [["aa","bb","cc"],["aa","bb","cc"],["b","b","v"]];
var hash = {};
var result = [];
for(var i = 0, len = arr.length; i < len; i++){
if(!hash[arr[i]]){
result.push(arr[i]);
hash[arr[i]] = true;
}
}
alert(result);
[/code]
用for循环加判断,没有什么捷径的
写了一段js,应该能满足你的需要:
[code="JavaScript"]
<br> function deleteSame(){<br> var array=[["aa","bb","cc"],["aa","bb","cc"],["b","b","v"]];</p> <pre><code>for(var i=0;i<array.length;i++){ for(var j=i+1;j<array.length;j++,i++) { if( equalArray(array[j],array[i])) { array.splice(j,1); } } } alert(array); } function equalArray(a1, a2) { if (a1.length != a2.length) { return false; } for (var i = 0; i < a1.length; i++) { var j = isContain(a2,a1[i]); if (j < 0) { return false; } else { return true; } } } function isContain(_arr,_element) { for ( var i = 0; i < _arr.length; i++) { if (_arr[i] == _element) { return i; } } return -1; }; </code></pre> <p>
[/code]
调用这里的deleteSame就能返回想要的结果,
仅供参考~
亲,这样就OK~
[code="javascript"]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
[/code]
[code="js"]
var array = [["aa" , "bb" , "cc"] , ["aa", "bb" , "cc"] , ["b" , "b" , "v"]];
var tempObj = {};
for(var n in array){
var itemString = array[n].join("");
if(tempObj[itemString]){
array.splice(n , 1);
}
tempObj[itemString] = true;
}
alert(array);
[/code]
敢问楼下这位兄台,我的除了格式乱的,哪里不太优雅呢? 呵呵。。。 完全没必要再创建个result对象撒~