【问题标题】:How to access elements from a 1-D array using nested loops?如何使用嵌套循环访问一维数组中的元素?
【发布时间】:2021-07-10 03:11:59
【问题描述】:

我需要将以下数据存储在一个向量中(按此顺序)

cAge[0]  = 'Age (1) (1)';
cAge[1]  = 'Age (1) (2)';
cAge[2]  = 'Age (1) (3)';
cAge[3]  = 'Age (2) (1)';
cAge[4]  = 'Age (2) (2)';
cAge[5]  = 'Age (2) (3)';
cAge[6]  = 'Age (3) (1)';
cAge[7]  = 'Age (3) (2)';
cAge[8]  = 'Age (3) (3)';
cAge[9]  = 'Age (4) (1)';
cAge[10] = 'Age (4) (2)';
cAge[11] = 'Age (4) (3)';

我可以毫无问题地使用for 循环来做到这一点:

var cAge = [];

for (var i=1; i<=4; i++) {
  for (var j=1; j<=3; j++) {
    cAge.push('Age (' + i + ')' + ' ' + '(' + j + ')');
  }
}

但是我无法使用以下嵌套循环显示所有这些:

for (var i=1; i<=4; i++) {
  for (var j=1; j<=3; j++) {
    console.log(cAge[j-1]); // <- What should j-1 be?
  }
}

它产生:

Age (1) (1)
Age (1) (2)
Age (1) (3)
Age (1) (1)
Age (1) (2)
Age (1) (3)
Age (1) (1)
Age (1) (2)
Age (1) (3)
Age (1) (1)
Age (1) (2)
Age (1) (3)

j-1 应该是什么?

【问题讨论】:

  • 您正在推送1-d 数组中的数据。所以只需使用forEachfor-loop

标签: javascript arrays for-loop multidimensional-array


【解决方案1】:

使用嵌套循环访问一维数组中的元素:

const cAge = [],
  nrows = 4,
  ncols = 3;

for (var i = 1; i <= nrows; i++) {
  for (var j = 1; j <= ncols; j++) {
    cAge.push("Age (" + i + ")" + " " + "(" + j + ")");
  }
}

for (var i = 0; i < nrows; i++) {
  for (var j = 0; j < ncols; j++) {
    console.log(cAge[i * ncols + j]);
  }
}

这里,ncols = 3

i in nested loop j in nested loop 1-D index
0 0 0 * 3 + 0 = 0
0 1 0 * 3 + 1 = 1
0 2 0 * 3 + 2 = 2
1 0 1 * 3 + 0 = 3
1 1 1 * 3 + 1 = 4
1 2 1 * 3 + 2 = 5
2 0 2 * 3 + 0 = 6
2 1 2 * 3 + 1 = 7
2 2 2 * 3 + 2 = 8

【讨论】:

  • @manooooh 请检查这是否解决了您的问题,如果您有任何问题,请告诉我。
猜你喜欢
  • 2020-09-15
  • 1970-01-01
  • 2023-01-25
  • 2018-08-30
  • 1970-01-01
  • 2020-05-03
  • 1970-01-01
  • 2019-08-19
  • 1970-01-01
相关资源
最近更新 更多