0

我想删除更多维数组中的一个重复元素。到目前为止,这是我的代码:

for (var i = 0; i< blog.length; i++){
  for (var i = 0; i< blog.length; i++){
     var check1 = blog[i][1];
     var check2 = blog[j][1];
     //check1 = 120;;200  check2 = 130;;180
     if (check1 == check2){
        blog[i].splice(i, 1);
     }
  }
}
  • 我只想删除重复对的第一个元素。
  • 你能给我一个更聪明的代码吗?
4

1 回答 1

0

在数组上向下循环并将找到的值存储为对象中的键,以便您可以快速in检查。

var blog = [['a', 0], ['b', 1], ['c', 2], ['d', 3], ['e', 0]]; // test var

var i = blog.length, // var to loop over
    o = {}, // obj to hold keys
    b2 = []; // temporary array
while (i--) { // looping down
    if (false === blog[i][1] in o) { // if not already seen
        o[blog[i][1]] = 1; // mark as seen
        b2[b2.length] = blog[i]; // add to temporary array
    }
}
blog = b2.reverse(); // temporary array is backwards so reverse it and set `blog`
// [["b", 1], ["c", 2], ["d", 3], ["e", 0]]
于 2013-03-02T14:39:20.773 回答