javascript - 从多维数组中删除重复的元素对

标签 javascript arrays multidimensional-array duplicates coordinates

我有一个如下所示的数组:

1.  coordinates = [ [16.343345, 35.123523],
2.                  [14.325423, 34.632723],
3.                  [15.231512, 35.426914],
4.                  [16.343345, 35.123523],
5.                  [15.231512, 32.426914] ]

第 5 行的纬度与第 3 行相同,但它们的经度不同,因此不重复。

第 3 行和第 6 行的纬度和经度相同,因此是重复的,应该删除一个。

最佳答案

这个问题的难点在于不同的数组永远不会比较相等,即使它们包含相同的值。因此直接比较方法,如 indexOf 将不起作用。

以下模式可能有助于解决此问题。编写一个函数(或使用内置函数)将数组转换为标量值并检查这些值在集合中是否唯一。

uniq = function(items, key) {
    var set = {};
    return items.filter(function(item) {
        var k = key ? key.apply(item) : item;
        return k in set ? false : set[k] = true;
    })
}

其中 key 是一个“散列”函数,它将 items(无论它们是什么)转换为可比较的标量值。在您的特定示例中,仅将 Array.join 应用于数组似乎就足够了:

uniqueCoords = uniq(coordinates, [].join)

关于javascript - 从多维数组中删除重复的元素对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14415787/

相关文章:

javascript - onclick 函数中不止一个命令

javascript - dc.js/d3.js - 每个类别组的最小/最大值

Javascript 将参数传递给回调函数

javascript - 从多维数组中删除未定义

r - 用 R 估计多维空间中的密度

javascript - 使用 JavaScript 控制实际 YouTube 网站上的 YouTube 视频

javascript - HighChart 折线图未显示

c++ - 为枚举索引数组重载 std::get

c - 尝试将文件中的某些值读入 C 中的数组

c++ - 如何使用for循环C++将不同的值输入到二维指针到指针数组中