我需要撰寫一個程式,在行 (5) 和列 (4) 中的變數“數字”中創建一個二維陣列。陣列的元素必須是從 1 開始到 20 結束的連續整數。我必須使用“for”回圈。
[ 1, 2, 3, 4 ],
[ 5, 6, 7, 8 ],
[ 9, 10, 11, 12 ],
[ 13, 14, 15, 16 ],
[ 17, 18, 19, 20 ],
所以我想出了這個:
const numbers = [];
const columns = 4;
const rows = 5;
for (let i = 0; i < rows; i ) {
numbers [i] = [];
for (let j = 0; j < columns; j ){
numbers [i][j] = j 1;
}
}
console.log(numbers);
但是這樣做的結果是五個相同的行,如下所示:
[ 1, 2, 3, 4 ],
[ 1, 2, 3, 4 ],
[ 1, 2, 3, 4 ],
[ 1, 2, 3, 4 ],
[ 1, 2, 3, 4 ]
你知道如何解決它嗎?如何從 5 開始制作第二行?
uj5u.com熱心網友回復:
看起來像在第二個回圈中,你應該這樣numbers [i][j] = j * i;做
uj5u.com熱心網友回復:
每次外部 for 回圈開始新的迭代時,j 都會重置為 0,這就是為什么您不斷獲取以 1 開頭的行的原因。
要解決此問題,您可以在跟蹤當前數字的 for 回圈之外宣告一個變數,并使用它來代替 j,如下所示:
const numbers = [];
const columns = 4;
const rows = 5;
let currNum = 0;
for (let i = 0; i < rows; i ) {
numbers [i] = [];
for (let j = 0; j < columns; j ){
currNum ;
numbers [i][j] = currNum;
}
}
console.log(numbers);
uj5u.com熱心網友回復:
這是一些更新的代碼。您需要添加i*columns到每個值
const numbers = [];
const columns = 4;
const rows = 5;
for (let i = 0; i < rows; i ) {
numbers[i] = [];
for (let j = 0; j < columns; j ){
numbers[i][j] = j 1 (i*columns);
}
}
console.log(numbers);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/451945.html
標籤:javascript 数组 for循环 多维数组
上一篇:使用Javascript僅從多維陣列中的多個字串中回傳匹配的物件
下一篇:Spinner不使用三元運算子
