【问题标题】:Remove similar duplicates from 2D array in JavaScript从 JavaScript 中的二维数组中删除相似的重复项
【发布时间】:2023-01-11 13:37:18
【问题描述】:

我需要从 JavaScript 中的二维数组中删除类似的重复项以及真正的重复项。

let a = [
  [5, 6],
  [1,1],
  [6,5],
  [1,1],
  [3,2],
  [2,3]
]

function makeUnique(arr) {
  var uniques = [];
  var itemsFound = {};
  for(var i = 0, l = arr.length; i < l; i++) {
      var stringified = JSON.stringify(arr[i]);
      if(itemsFound[stringified])  continue; 
      uniques.push(arr[i]);
      itemsFound[stringified] = true;
  }
  return uniques;
}

a=makeUnique(a)
console.log(a);

我有这个输出:

[ [ 5, 6 ], [ 1, 1 ], [ 6, 5 ], [ 3, 2 ], [ 2, 3 ] ]

正确的应该是:

[ [ 5, 6 ], [ 1, 1 ], [ 2, 3 ] ]

我的代码正确地删除了重复项,但我也需要删除类似的重复项。

例如,如果我有 [3,2] 和 [2,3],我应该删除 [3,2](具有更大起始索引值的那个。)

你能帮我解决这个问题吗?

【问题讨论】:

    标签: javascript arrays multidimensional-array


    【解决方案1】:

    以下是如何执行此操作的示例:

    
    function makeUnique(arr) {
        var uniques = [];
        var itemsFound = {};
        for (var i = 0, l = arr.length; i < l; i++) {
            if (!itemsFound[arr[i]] && !itemsFound[[arr[i][1], arr[i][1]]]) {
                uniques.push(arr[i]);
                itemsFound[arr[i]] = true;
                itemsFound[[arr[i][1], arr[i][0]]] = true;
            }
        }
        return uniques;
    }
    

    我希望它有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-11-06
      • 1970-01-01
      • 1970-01-01
      • 2019-05-02
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      相关资源
      最近更新 更多