該函式需要找到第一次出現的和等于 10 的連續數字,并將它們作為陣列回傳。我的想法是繼續對數字求和,直到累加器(在這種情況下x大于 10),此時 的值x重置為零,并通過分配給應該增長的變數i重置回索引 1ct每次重置時加一,因此回圈將回傳并從下一個元素開始,直到它獲得正確的值。但是由于某種原因ct被卡住1并且不會增長,并且回圈不會越過索引 1 處的第二個陣列元素。邏輯或實作中是否有錯誤?
警告:此代碼可能會導致頁面崩潰或無回應
const arr = [2, 3, 1, 2, 7, 2, 5, 4, 5, 1, 2, 1];
function test(arr) {
let x = 0;
for (let i = 0; i < arr.length; i ) {
let ct = 0;
x = x arr[i]
if (x > 10) {
x = 0;
i = ct;
ct
}
console.log(x)
}
}
console.log(test(arr))
uj5u.com熱心網友回復:
問題是你ct在錯誤的地方定義了。它在回圈內,這意味著每次到達i = ct,i被重置0并且ct 沒有效果的點時(因為每次迭代,ct都被重置為0)。您需要ct在與以下相同的范圍內定義x:
const arr = [2, 3, 1, 2, 7, 2, 5, 4, 5, 1, 2, 1];
function test(arr) {
let x = 0;
let ct = 0;
for (let i = 0; i < arr.length; i ) {
x = x arr[i];
if (x > 10) {
x = 0;
i = ct;
ct ;
}
console.log(x);
}
}
test(arr);
如果您愿意,我還為您填寫了函式的其余邏輯:
顯示代碼片段
const arr = [2, 3, 1, 2, 7, 2, 5, 4, 5, 1, 2, 1];
function test(arr) {
let x = 0;
let ct = 0;
let result = [];
for (let i = 0; i < arr.length; i ) {
x = x arr[i];
if (x > 10) {
x = 0;
i = ct;
ct ;
}
if (x == 10) {
result = arr.slice(ct, i 1);
return result;
}
console.log(x);
}
return result;
}
console.log(test(arr));
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/491071.html
標籤:javascript for循环
