二维数组中的空项问题

Probleme with empty items in 2d array

我正在尝试用 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'  

(...................)

提前感谢您的回答;)。

简单map解决方案

const theaterSeats = [...Array(26)].map((_, i) => {
  return [...Array(100)].map((_, j) => `${i+1}-${j+1}`)
})

console.log(theaterSeats)

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;
}

这只是因为您使用 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());

感谢您的回复;)。

我在检查您的答案之前找到了解决方案。我这样做了,它正在工作:

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());

我会记住你的提示。

再次感谢 ;)