【发布时间】:2016-10-10 19:10:23
【问题描述】:
我正在尝试查找数组中序列的长度,介于指定数字的第一次和第二次出现之间。
例如:lengthOfSequence([0, -3, 7, 4, 0, 3, 7, 9], 7) 将返回 5,因为在数字 7 的 first 和 second 出现之间有 5 个索引。
我觉得我编写的代码应该可以工作,但是在控制台记录之后,看起来我的 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 循环会找到第一次出现的 7(索引 2)并将其推送到我的索引数组变量,但它会这样做两次。所以我的索引数组就是[2,2]。为什么不是[2,6]?
【问题讨论】:
标签: javascript arrays function variables methods