我有一個包含多個值的陣列,我想將值存盤在 3 的倍數中。因此,在這種情況下,新陣列應該是13and 28。但是,我只得到13.
代碼:
// array1 --> [ '5', '10', '13', '15', '20', '28' ]
var trueLength = array1.length;
var iCount = 1;
for(var i = 0; i < trueLength;) {
if(iCount % 3 != 0) {
array1.shift();
} else if (iCount % 3 == 0) {
array2.push(array1[i]);
array1.shift();
}
iCount = 1;
if(iCount == trueLength) break;
}
輸出:
[ '13' ]
我沒有看到任何邏輯上的錯誤,因為它只輸出13沒有意義。
uj5u.com熱心網友回復:
array1.shift();將洗掉陣列的第一個元素。如果您在迭代時這樣做iCount,您將跳過陣列的某些元素,因為您既要洗掉專案又要增加被迭代的索引。
只需按被迭代的索引的模數過濾陣列。
const arr = [ '5', '10', '13', '15', '20', '28' ];
const result = arr.filter((_, i) => i % 3 === 2);
console.log(result);
uj5u.com熱心網友回復:
在break這種情況下,你會遇到一點邏輯問題
var array1 = ['5', '10', '13', '15', '20', '28'];
var array2 =[];
var trueLength = array1.length;
var iCount = 1;
for(var i = 0; i < trueLength;) {
if(iCount % 3 != 0) {
array1.shift();
} else if (iCount % 3 == 0) {
console.log(iCount);
array2.push(array1[i]);
array1.shift();
}
iCount = 1;
if(iCount == trueLength 1) break;
}
console.log(array2[1]);
uj5u.com熱心網友回復:
如果您喜歡使用 shift 模式并需要 pushign 值,您可以使用兩個變數來跟蹤其余專案的長度,另一個用于計算余數。
const
array = ['5', '10', '13', '15', '20', '28'];
let i = 1,
l = array.length;
while (l) {
const value = array.shift();
if (i % 3 === 0) array.push(value);
l--;
i ;
}
console.log(array);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/406987.html
標籤:
上一篇:參考的反應影像元素
下一篇:為yolov4標記影像
