我試圖找到數組中序列的長度,指定數字的第一次和第二次出現之間的序列長度。問題試圖找到數組中的序列長度
例如:lengthOfSequence([0, -3, 7, 4, 0, 3, 7, 9], 7)
將返回5,因爲有第一和秒發生數7
我覺得我寫了應工作的代碼之間的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]
?
也需要休息的時候第二個被發現....如果有更多的相同會給不正確的輸出 – charlietfl
@charlietfl:這不是真的。 OP的代碼不需要休息;但它總會返回前兩次出現的距離。如果超過2個,可以使用返回數組的長度並從第一個中減去最後一個項。 (從技術上講,只有當發現一個事件時它纔是正確的,但是當沒有事件發生時將會拋出錯誤。) – usr2564301
是的..這是真的......數組只會增長並且前兩個元素都是需要的 – charlietfl