我试图在指定数字的第一次出现和第二次出现之间找到数组中序列的长度。
例如:lengthOfSequence([0, -3, 7, 4, 0, 3, 7, 9], 7)
将返回 5,因为 之间有 5 个索引第一次和第二次出现数字 7。
我觉得我编写的代码应该可以工作,但是在控制台日志记录之后,我的 arr.push()
方法似乎只是将第一个索引推送到我的索引数组变量,并且它推了两次。为什么会这样?
这是我的上下文代码:
var lengthOfSequence = function (arr, n) {
var indexes = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] === n) {
indexes.push(arr.indexOf(arr[i]));
}
}
return arr.indexOf(indexes[1]) - arr.indexOf(indexes[0]);
}
因此,例如,如果我使用我之前使用的数组 lengthOfSequence([0, -3, 7, 4, 0, 3, 7, 9], 7)
,我的 for loop 会找到第一次出现的 7(索引 2)并将其推送到我的索引数组变量,但它只会执行两次。所以我的索引数组就是 [2,2]
。为什么不是 [2,6]
?
最佳答案
indexOf
并不像您认为的那样。它返回使用提供的值找到的第一个 项目的索引。对于数组中的两个值,它返回第一个索引。
由于您只需要索引并且您已经在循环中对其进行了迭代,因此您可以简单地使用 i
本身:
indexes.push(i);
关于javascript - 尝试在数组中查找序列长度的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39965165/