大家早上好,我有以下问题,我有一个如下数组:
["FI29","FI09","JM15","FI29"]
我正在寻找某种方法或方法来知道我的数组中是否重复了一个元素,我想要这样的结果:
["FI29","FI09","JM15","FI29"]//devuelve true
["FI29","FI09","JM15","FI28"]//devuelve false
我正在阅读every()
and方法some()
,但我不明白它们如何帮助我。有谁知道怎么做?想到的第一件事就是以嵌套的方式遍历数组,以便比较是否有重复的元素,但这对我来说似乎很牵强。无论如何,我把我的想法放在这里:
var array=["FI29","FI09","JM15","FI29"]//devuelve true
//["FI29","FI09","JM15","FI28"]//devuelve false
var repetido = false;
for (var i = 0; i < array.length; i++) {
for (var j = 0; j < array.length; j++) {
if (array[i] == array[j] && i != j) { //revisamos que i sea diferente de j, para que no compare el mismo elemento exacto.
repetido= true;
}
}
}
console.log(repetido);
可以使用类似于这个 Stack Overflow对如何获取数组的唯一值的问题的回答中提出的技术。
以下功能
将告诉您
valor
占据给定元素indice
内部位置的元素是否lista
是它第一次出现在该列表中。诀窍是基于lista.indexOf(valor)
它返回值第一次出现的索引这一事实。如果它与参数匹配indice
,则它是第一次出现。如果不是,那就是我们面临第二个,第三个等等。类似地,您可以定义它的反面:
有了这些功能,就很容易做你想做的事。该列表没有重复的元素,只要它们(每个)都是第一次出现。因此:它
lista.every(esPrimero)
会true
在这种情况下给出,并且false
如果它有重复的元素。如果你想要相反的条件,只要其中一些(一些)不是第一次出现,列表就会有重复的元素。因此,在这种情况下,如果所有元素都不同,
lista.some(noEsPrimero)
它将给出。true
false
节目
可以通过一个函数非常简单地完成,该函数检查数组的任何元素是否在数组的其余部分中重复,从每个元素的后续位置(位置+1)开始询问。
为此,您可以使用
some()
检查数组的任何元素是否满足条件的函数indexOf()
以及指示数组中是否存在从一个位置开始的值的函数,代码如下:我认为这是比我之前的原始答案更简化和精确的方式。
上一个答案
为此,您可以首先使用函数删除重复元素,然后将这个新数组与原始数组进行比较:
我希望你觉得它有用,问候。
可以使用 来完成
new Set(array)
,这会生成一个新的元素集( set of elements),它们不会重复。使用获得集合中的元素数
size
。将size
始终小于或等于数组的原始数量,因此,要知道它是否没有重复,您可以比较它new Set(array)
是否等于array.length
,但是如果您想知道它是否有重复,请检查它不同,如下。资料来源:SOes 聊天中的评论(Pablo Lozano 和 lois6b 撰写)
代码:
我最近发布了一个答案,但它已被删除。我不知道为什么。好吧,说到找出数组的重复元素,就像对数组进行排序并确定下一个和上一个是否相同一样简单。该操作通过“for”循环执行。
我放了整页看。这是代码: