как заполнить числа в многомерных массивах треугольника? - PullRequest
0 голосов
/ 01 января 2019

как заполнить числа в этих массивах?

[ 
 [ 0 ], 
 [ 0, 0 ], 
 [ 0, 0, 0 ], 
 [ 0, 0, 0, 0 ] 
]

то, что я получил для вложенных циклов, числа, которые я заполняю, такие же, как числа цели (num);он повторяет целевые числа (num) в этих массивах

выглядит ниже:

var arr = [
  [0],
  [0, 0],
  [0, 0, 0],
  [0, 0, 0, 0]
]
var num = 20

for (var i = 0; i < arr.length; i++) {
  for (var j = 0; j < arr[i].length; j++) {
    for (var k = 0; k <= num; k++) {
      arr[i][j] = k
    }
  }
};
console.log(arr)

вывод, который я хочу, выглядит следующим образом:

[ 
 [ 1 ], 
 [ 3, 5 ], 
 [ 7, 9, 11 ], 
 [ 13, 15, 17, 19 ] 
]

Может кто-нибудь объяснить, почему мои коды повторяют одно и то же число?в отличие от вывода я хочу

Ответы [ 3 ]

0 голосов
/ 01 января 2019

Вы можете сделать это с переменной, чтобы отслеживать значение, которое нужно вставить, и отобразить

var arr = [[ 0 ],[ 0, 0 ],[ 0, 0, 0 ],[ 0, 0, 0, 0 ]]

let value = 0;

let op= arr.map(e=>{
  return e.map(el=> el=++value)
})
console.log(op)
0 голосов
/ 01 января 2019

var arr = [
  [0],
  [0, 0],
  [0, 0, 0],
  [0, 0, 0, 0]
]
var num = 20

for (var i = 0; i < arr.length; i++) {
  for (var j = 0; j < arr[i].length; j++) {
    for (var k = 0; k <= num; k++) {
      arr[i][j] = k
    }
  }
};
console.log(arr)

Третий для цикла всегда выполняет код 20 раз. Поэтому для каждого индекса массива хранится последнее значение цикла, т.е. 20

0 голосов
/ 01 января 2019

В самом внутреннем цикле вы переназначаете arr[i][j] = k снова и снова, пока k не достигнет 20. Таким образом, каждый раз, когда достигается самый внутренний цикл, arr[i][j] становится 20.

Вынужно только 2 цикла: внешний (цикл над arr) и внутренний (цикл над каждым подрешеткой), сохраняя при этом постоянный счетчик снаружи:

var arr = [
  [0],
  [0, 0],
  [0, 0, 0],
  [0, 0, 0, 0]
];

var counter = 1;
for (var i = 0; i < arr.length; i++) {
  for (var j = 0; j < arr[i].length; j++) {
    arr[i][j] = counter;
    counter++;
  }
}
console.log(arr);

(также обратите внимание, что цикл for } не должен иметь ; после него)

Для отображения только нечетных чисел:

var arr = [
  [0],
  [0, 0],
  [0, 0, 0],
  [0, 0, 0, 0]
];

var counter = 1;
for (var i = 0; i < arr.length; i++) {
  for (var j = 0; j < arr[i].length; j++) {
    arr[i][j] = counter;
    counter += 2;
  }
}
console.log(arr);
...