给定一个数组数组,识别重复项的有效方法是什么?
var array = [
[
11.31866455078125,
44.53836644772605
],
[ // <-- Here's the duplicate
11.31866455078125,
44.53836644772605
],
[
11.371536254882812,
44.53836644772605
],
[
11.371536254882812,
44.50140292110874
]
]
我一直在与lodash作为接受的依赖项,我了解如何使用返回“唯一”列表_.uniqWith and _.isEqual:
_.uniqWith(array,_.isEqual)
With 会给出列表的“唯一”版本:
[
[ 11.31866455078125, 44.53836644772605 ],
[ 11.371536254882812, 44.53836644772605 ],
[ 11.371536254882812, 44.50140292110874 ]
]
但我不仅仅需要报告唯一元素,还需要重复的元素,最好是第一次出现的索引。
这实际上包含在lodash
通过我缺少的一些方法组合来构建库?或者我只是不得不忍受编写循环来比较元素。
可能只是对此感到过度疲劳,所以欢迎重新审视这个问题。
如果有适合的库方法,尽量不要重写函数,所以我基本上坚持:
仅返回重复项或至少返回与“唯一列表”的比较差异。
基本上识别数组中数组的“索引”。虽然我认为这可以减少过滤器_.isEqual一旦识别出重复项目。
还尝试避免创建对象哈希/映射并在此处计算键的出现次数,或者至少不作为单独的对象,并且作为可以在功能上“内联”完成的操作。