JavaScript 2D数组的独特元素。如果有重复项,如何删除它们?

时间:2016-02-14 15:32:21

标签: javascript arrays multidimensional-array duplicates

我有一些名为user_list的数组,看起来像这样:

[[user3, 12], [user2, 10], [user1, 5], [user5, 5], [user4, 4]]

第一列包含用户名,第二列包含其余额。我已经按平衡对它们进行了排序,现在我必须删除所有具有相同余额的行,并将具有不同余额的用户添加到名为unique_user_list的新数组中。

所以,预期的结果是:

[[user3, 12], [user2, 10], [user4, 4]]

这是我的循环(不起作用)。

for(var i = 0; i<user_list.length; i++) {
    var unique = user_list[i][1];
    for(var j = 1; j<user_list.length; j++) {
        if(unique!=user_list[j][1]) {
            unique_user_list[i] = user_list[i][0];
        }
    }
}

2 个答案:

答案 0 :(得分:1)

这可能是更好的方法,但你可以让它像这样工作:

function getUnique() {
  var unique_user_list = [];
  for (var i = 0; i < user_list.length; i++) {
    var unique = user_list[i][1];
    var match = false;
    for (var j = 0; j < user_list.length; j++) {
      if (unique == user_list[j][1] && j != i) {
        match = true;
      }
    }
    if (!match) {
      unique_user_list.push(user_list[i]);
    }
  }
  return unique_user_list;
}

你想确保j!= i,所以你不会检查值等于它自己。并且你想以同样的理由推送到外环中的输出数组。

https://jsfiddle.net/sco_tt/w704p6kt/

答案 1 :(得分:0)

此解决方案的特色是Array#filter(),仅使用一个循环过滤余额。

magicString