【发布时间】:2016-08-15 13:08:30
【问题描述】:
给定一个数组,识别重复项的有效方法是什么?
var array = [
[
11.31866455078125,
44.53836644772605
],
[ // <-- Here's the duplicate
11.31866455078125,
44.53836644772605
],
[
11.371536254882812,
44.53836644772605
],
[
11.371536254882812,
44.50140292110874
]
]
我一直在使用 lodash 作为可接受的依赖项来处理这个问题,我知道如何使用 _.uniqWith 和 _.isEqual 返回“唯一”列表:
_.uniqWith(array,_.isEqual)
With 会给出列表的“唯一”版本:
[
[ 11.31866455078125, 44.53836644772605 ],
[ 11.371536254882812, 44.53836644772605 ],
[ 11.371536254882812, 44.50140292110874 ]
]
但我不仅需要报告唯一元素,还需要重复的元素,理想情况下是第一次出现的索引。
lodash 库中是否通过我缺少的一些方法组合实际涵盖了这一点?还是我只能忍受编写循环来比较元素。
可能只是对此感到过度疲劳,因此欢迎以新的眼光看待这个问题。
如果有适合的库方法,尽量不要重写函数,所以我基本上坚持:
仅返回重复项或至少返回与“唯一列表”的比较差异。
基本上识别数组中数组的“索引”。虽然我认为一旦识别出重复项目,这可能是使用
_.isEqual减少过滤器。
还尝试避免创建对象 Hash/Map 并在此处计算键的出现次数,或者至少不作为单独的对象,并且作为可以在功能上“内联”完成的事情。
【问题讨论】:
标签: javascript arrays underscore.js lodash