我有一系列数字,我需要确保它们是唯一的.我在互联网上找到了下面的代码片段,它的工作情况很好,直到数组中的数字为零.我发现这个其他脚本在SO上看起来几乎就像它,但它不会失败.
所以为了帮助我学习,有人可以帮我确定原型脚本出错的地方吗?
Array.prototype.getUnique = function() {
var o = {}, a = [], i, e;
for (i = 0; e = this[i]; i++) {o[e] = 1};
for (e in o) {a.push (e)};
return a;
}
Run Code Online (Sandbox Code Playgroud)
我需要检查一个JavaScript数组,看看是否有任何重复的值.最简单的方法是什么?我只需要找到重复的值是什么 - 我实际上并不需要它们的索引或重复它们的次数.
我知道我可以遍历数组并检查匹配的所有其他值,但似乎应该有一个更简单的方法.有任何想法吗?谢谢!
我有一系列哈希,像这样:
[{id: "4bf58dd8d48988d110941735", name: "italy"},
{id: "4bf58dd8d48988d1c6941735", name: "skandi"},
{id: "4bf58dd8d48988d147941735", name: "diner"},
{id: "4bf58dd8d48988d110941735", name: "italy"},
{id: "4bf58dd8d48988d1c4941735", name: "resto"},
{id: "4bf58dd8d48988d14a941735", name: "vietnam"},
{id: "4bf58dd8d48988d1ce941735", name: "fish"},
{id: "4bf58dd8d48988d1c4941735", name: "resto"},
{id: "4bf58dd8d48988d1c4941735", name: "resto"}]
Run Code Online (Sandbox Code Playgroud)
我想扔掉重复的哈希.设置不起作用,因为哈希是唯一对象.
我感到困难,需要一脚思考.请指教!
输入:
[[-1,-1,2],[-1,0,1],[-1,-1,2],[-1,0,1],[-1,-1,2],[-1,0,1],[-1,0,1]]
Run Code Online (Sandbox Code Playgroud)
我想要的输出:
[[-1,-1,2],[-1,0,1]]
Run Code Online (Sandbox Code Playgroud)
任何其他的想法,除了这一个?
谢谢
给定一个数组数组,识别重复项的有效方法是什么?
var array = [
[
11.31866455078125,
44.53836644772605
],
[ // <-- Here's the duplicate
11.31866455078125,
44.53836644772605
],
[
11.371536254882812,
44.53836644772605
],
[
11.371536254882812,
44.50140292110874
]
]
Run Code Online (Sandbox Code Playgroud)
我一直在研究这个lodash作为一个被接受的依赖,我得到如何使用_.uniqWith和返回"唯一"列表_.isEqual:
_.uniqWith(array,_.isEqual)
Run Code Online (Sandbox Code Playgroud)
将给出列表的"唯一"版本:
[
[ 11.31866455078125, 44.53836644772605 ],
[ 11.371536254882812, 44.53836644772605 ],
[ 11.371536254882812, 44.50140292110874 ]
]
Run Code Online (Sandbox Code Playgroud)
但不仅仅是报告独特的元素,我只需要复制的元素,理想情况下是第一次出现的索引.
lodash通过我缺少的某些方法组合,这实际上是否涵盖在库中?或者我只需要编写循环来比较元素.
可能只是在这方面过度紧张,所以对这个问题的新目光会很受欢迎.
如果有适合的库方法,尝试不重写函数,所以我基本上坚持:
仅返回重复或至少与"唯一列表"的比较差异.
基本上识别数组中数组的"索引".虽然我认为_.isEqual一旦识别出重复的项目,就可以减少过滤器.
还试图避免创建一个对象Hash/Map并在这里计算键的出现次数,或者至少不作为单独的对象,以及可以在功能上"在线"完成的事情.