Javascript 如何使用for循环返回数组中第一次出现的重复项?
我正在尝试用数组和数据结构构建逻辑。我正在尝试使用for循环实现逻辑Javascript 如何使用for循环返回数组中第一次出现的重复项?,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我正在尝试用数组和数据结构构建逻辑。我正在尝试使用for循环实现逻辑 function getRepeatingNumber(arr) { for (var i = 0; i < arr.length; i++) { for (var j = i + 1; j < arr.length; j++) { if (arr[i] === arr[j]) { return arr[i]; } } } return unde
function getRepeatingNumber(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
return arr[i];
}
}
}
return undefined;
}
getRepeatingNumber([2, 3, 6, 5, 2]);
函数getRepeatingNumber(arr){
对于(变量i=0;i如何实现返回重复项第一次出现的函数。在
i
之后的部分中,不要用j
迭代,而是迭代i
之前的部分:
函数getRepeatingNumber(arr){
对于(变量i=1;i对于(var i=0;i作为一名javascript开发人员,您应该熟悉函数编程和高阶函数,因此请查看文档以进一步了解一些有用的函数:如
filter
-find
-reduce
-findIndex
map
现在回答你的问题:
首先,你应该分步思考:
- 获取数组中某项的匹配项作为函数:
const arr=[2,5,6,2,4,5,6,8,2,5,2]
const res=arr.reduce((货币数量,项目)=>{
如果(项目==2)
号码++
返回号码OCC
}, 0);
log(`result without function${res}`);
/*所以我的功能是*/
const occurrencefun=(num,arr)=>{
返回arr.reduce((编号OCC,项目)=>{
如果(项===num)
号码++
返回号码OCC
}, 0);
}
log(`result using my function${occurrencefun(2,arr)}`);
因此您必须更改逻辑,使其不会在第一次匹配时退出创建“内存”到目前为止,在您看到的所有项目中,每次迭代都会使用该内存检查该项目是否已被看到,如果未添加到内存中,则在该时间退出/返回循环。我首先决定,如果该项目与下一个条目不匹配,则将该项目推入空数组,但如果已推入数组的项目已关闭,则会卡住该项目d在输入数组的末尾进行匹配。干得好!在你弄错之前已经做了很多;-)请注意,if(flag==0)
是不必要的,因为这是剩下的唯一可能性(当执行到达那里时总是正确的)一个问题:sort
将按字母顺序排序,但您需要一个数字排序。看看这个,谢谢您的回答,但您不认为我们正在加大难度并增加代码来解决这个问题。创建一个数据结构来存储项,然后排序以返回项,这样我们就可以轻松地在项中循环并返回第一次出现。我是通过创建一个新的数据结构和存储值来考虑这个问题的,但是我会记住时间和空间的复杂性来解决问题。我在编码和数据结构方面很新,所以还在学习。谢谢@trincot的输入,我会在参考相关链接后编辑我的答案。@jsLearner:你是对的,这个解决方案的复杂性是:n2
,而不是首选解决方案。我想分享一个更接近你试图解决的问题的解决方案。首选解决方案应该是@trincot共享的众多解决方案之一。它们需要更少的代码,而且性能更好。哦,天啊,哈哈,是的,但我觉得写lol很酷,我将删除thatG.aziz…抱歉,文档链接不起作用更新后,我将删除我的答案,因为我认为它无法回答您的问题