我正在嘗試用 JS 構建二維陣列。
一個劇院有 26 條線路,每條線路包括 100 個座位:
function theaterSeats() {
let seats= new Array(26);
for (let i = 1; i <= 26; i ){
seats[i] = new Array(100);
for (let j = 1; j <= 100; j ) {
seats[i][j] = `${i}-${j}`
}
}
return seats;
}
console.log(theaterSeats());
結果和我預期的相差不遠,除了每個陣列中都有一個空項......我不明白為什么。請幫忙?
[
<1 empty item>,
[
<1 empty item>, '1-1', '1-2', '1-3',
'1-4', '1-5', '1-6', '1-7',
'1-8', '1-9', '1-10', '1-11'
(………………)
提前感謝您的回答;)。
uj5u.com熱心網友回復:
簡單的地圖解決方案
const theaterSeats = [...Array(26)].map((_, i) => {
return [...Array(100)].map((_, j) => `${i 1}-${j 1}`)
})
console.log(theaterSeats)
uj5u.com熱心網友回復:
JavaScript 陣列的索引從 0 開始,這就是為什么您的第一項始終為空,因為您跳過了索引 0 并從索引 1 開始迭代。您需要從索引 0 開始填充陣列!
您的代碼的正確版本可能是:
function theaterSeats() {
let seats= new Array(26);
for (let i = 0; i < 26; i ){
seats[i] = new Array(100);
for (let j = 0; j < 100; j ) {
seats[i][j] = `${i 1}-${j 1}`
}
}
return seats;
}
uj5u.com熱心網友回復:
雖然有更優雅的方法來設定二維陣列,但我寧愿修復您的代碼:
function theaterSeats() {
let seats = [];
for (let i = 0; i < 26; i ) {
seats[i] = [];
for (let j = 0; j < 100; j ) {
seats[i][j] = `${i 1}-${j 1}`;
}
}
return seats;
}
console.log(theaterSeats());
注意:
- 陣列索引從 0 開始,因此 26 項陣列的索引從 0...25
- 初始化時您實際上不必調整陣列的大小...
let a = []; a[9] = "10th item"按預期作業
uj5u.com熱心網友回復:
這只是因為您使用 1 作為第一個索引而不是 0,陣列索引從 0 開始,類似于:
包含 7 個元素的陣列具有以下索引:0,1,2,3,4,5,6。因此,當將值設定為某個位置時,您將開始: array[0] = 'some value', array[1] = 'some other value' ...
在你的 for 回圈中,你需要從 i 和 j = 0 開始。所以它看起來像
function theaterSeats() {
let seats= new Array(26);
for (let i = 0; i <= 26; i ){
seats[i] = new Array(100);
for (let j = 0; j <= 100; j ) {
seats[i][j] = `${i 1}-${j 1}`
}
}
return seats;
}
console.log(theaterSeats());
uj5u.com熱心網友回復:
感謝您的回復 ;)。
在檢查您的答案之前,我找到了解決方案。我這樣做了,它正在作業:
function theaterSieges() {
let siege = new Array(26);
for (let i = 0; i < 26; i ){
siege[i] = new Array(100);
for (let j = 0; j < 100; j ) {
siege[i][j] = `${i 1}-${j 1}`
}
}
return siege;
}
console.log(theaterSieges());
我會記住你的提示。
再次感謝 ;)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/451898.html
標籤:javascript 数组 功能 多维数组
