关于查找数组中第一个重复数字的问题,第二次出现的数据具有最小索引。理解查找重复数字并返回第二次出现的最低索引
如果我理解到目前为止,变量firstDuplicate是一个函数对象,它使用箭头符号来缩写'var firstDuplicate = function(a){}'等。这是我的问题开始的地方。
1)创建一个新的设置对象会自动填充使用函数传递的数组?如何知道set方法将数组传递给函数并进行一系列操作?
2)现在我明白在for循环中数组中的每个元素都被遍历并且当前索引是e,但这里是我开始在概念上开始丢失的内容。凡在以下几点:
if (r.has(e))
其中比较发生确切地说,这是检查看到重复的数字是什么这个数组中,并判断它们的比较有什么重复的第二出现的最低指数是?
const test1 = [0, 3, 4, 10, 2, 4, 2, 3]
firstDuplicate = a => {
r = new Set()
for (e of a)
if (r.has(e))
return e
else
r.add(e)
return -1
}
console.log(firstDuplicate(test1));
感谢您玛斯抽出时间。我正在检查你的解决方案,可能会回来一个关于它的问题。谢谢。 –
所以我只是改变了我原来的代码,我用我看到工作的数据用不同的值替换了数组。 [0,3,4,10,2,4,2,3]正如你所看到的,有三个重复的数字。这返回4.作为4的第二次出现的索引,小于2的第二次出现,以及3的第二次出现。我的问题 - 对于每个e的第一遍,因为r没有被初始化,所以r是空的,所以对于第一遍,控制将总是直接流向else子句,并填充r。是对的吗?不应该'如果(r.has(e))'总是返回true? –
我不明白在代码中比较重复数字的索引以找出谁的第二次出现具有最小的索引。 –