全职幽默
2012-08-09 00:05
浏览 1.1k

JS 如何删除二维数组的重复项

JS 如何删除二维数组的重复项?
数组 array=[["aa","bb","cc"],["aa","bb","cc"],["b","b","v"]]

删除后数组变为array2=[["aa","bb","cc"],["b","b","v"]]

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 半枝烟飘香 2012-08-09 10:33
    已采纳

    上面的代码都不是最优雅的,关键在于你对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]

    点赞 打赏 评论
  • hmj562986117 2012-08-09 09:16

    用for循环加判断,没有什么捷径的

    点赞 打赏 评论
  • liuyinhuan0409 2012-08-09 09:33

    写了一段js,应该能满足你的需要:
    [code="JavaScript"]
    <br> function deleteSame(){<br> var array=[[&quot;aa&quot;,&quot;bb&quot;,&quot;cc&quot;],[&quot;aa&quot;,&quot;bb&quot;,&quot;cc&quot;],[&quot;b&quot;,&quot;b&quot;,&quot;v&quot;]];</p> <pre><code>for(var i=0;i&lt;array.length;i++){ for(var j=i+1;j&lt;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 &lt; a1.length; i++) { var j = isContain(a2,a1[i]); if (j &lt; 0) { return false; } else { return true; } } } function isContain(_arr,_element) { for ( var i = 0; i &lt; _arr.length; i++) { if (_arr[i] == _element) { return i; } } return -1; }; </code></pre> <p>
    [/code]
    调用这里的deleteSame就能返回想要的结果,
    仅供参考~

    点赞 打赏 评论
  • andy_zheng2011 2012-08-09 09:36

    亲,这样就OK~
    [code="javascript"]
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">


    New Document




    <br> var array = [[&quot;aa&quot; , &quot;bb&quot; , &quot;cc&quot;] , [&quot;aa&quot;, &quot;bb&quot; , &quot;cc&quot;] , [&quot;b&quot; , &quot;b&quot; , &quot;v&quot;]];<br> var tempObj = {};<br> for(var n in array){<br> var itemString = array[n].join(&quot;&quot;);<br> if(tempObj[itemString]){<br> array.splice(n , 1);<br> }<br> tempObj[itemString] = true;<br> }<br> alert(array);<br>



    [/code]

    点赞 打赏 评论
  • andy_zheng2011 2012-08-09 11:29

    [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对象撒~

    点赞 打赏 评论

相关推荐 更多相似问题