gpt4 book ai didi

Javascript:如何找到第一个重复值并返回其索引?

转载 作者:行者123 更新时间:2023-11-29 16:06:51 25 4
gpt4 key购买 nike

我必须在数组中找到第一个重复值,然后在变量 firstIndex 中返回它的索引。这必须用 for 循环来完成,它应该在找到第一个重复项后停止。我知道这可能很简单,但我卡住了。到目前为止,我有这个,但它似乎没有用:

var numbers4 = [5, 2, 3, 4, 2, 6, 7, 1, 2, 3];
var firstIndex = "";
for (var a = 0; a < numbers4.length; a++) {
for (var b = a+1; b < numbers4.length; b++) {
if (numbers4[a] === numbers4[b])
firstIndex = numbers4.indexOf(numbers4[a]);
break;
}
}
console.log(firstIndex);

控制台打印出 1 这很好,因为 2 首先是重复的,但是当我更改数组中的数字时,循环不起作用。你能建议这里可以改变什么吗?

提前致谢!

最佳答案

如果我正确理解了您的问题,那应该对您有所帮助...基本上,您需要进行两次迭代。

const firstDupeIndex = list => list.findIndex(
(item, index) => list.lastIndexOf(item) !== index
);

console.log(
"First Dupe at index:",
firstDupeIndex([5, 2, 3, 4, 4, 6, 7, 1, 2, 3])
);


上述实现的缺点是 O(n2) , 由于嵌套 lastIndexOffindIndex 内功能。

更好的解决方案是通过构建字典来索引您的事件,从而将时间复杂度保持在 O(n)在最坏的情况下。可能有点不那么整洁,但在大量输入的情况下肯定会更有效率。

const firstDupeIndex = (list) => {
const dict = {};

for (const [index, value] of list.entries()) {
if (dict.hasOwnProperty(value)) {
return dict[value];
}

dict[value] = index;
}

return -1;
};

console.log(
"First Dupe at index:",
firstDupeIndex(['a', 'b', 'c', 'd', 'e', 'b', 'z', 't', 'c'])
);

关于Javascript:如何找到第一个重复值并返回其索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39346182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com