Получение в начале, а не случайных чисел при вызове метода принудительного ввода массива

#javascript #arrays

#javascript #массивы

Вопрос:

Допустим, я хочу создать массив со случайным размером:

 const generateNumber = (min, max) =>
    Math.floor(Math.random() * (max - min   1))   Math.floor(min);
const array = Array(generateNumber(5, 10));
  

и для четных индексов массива поместите числа из диапазона <a, b>, а для нечетного индекса поместите число из диапазона <c, d>.

Пока у меня есть код, подобный:

 const array = Array(generateNumber(5, 10));
for (let [index, val] of array.entries()) {
  if (index % 2 === 0) { // index is even
    array.push(generateNumber(10, 10));
  }
  if (index % 2 === !0) {
    array.push(generateNumber(30, 30))
  }
}

console.log(array)
  

но я получаю результат:

 [ <5 empty items>, 10, 10, 10, 10, 10 ]
  

Я новичок в JavaScript, и я немного смущен тем, что я делаю неправильно. Я буду благодарен за предложения о том, как решить проблему.

РЕДАКТИРОВАТЬ: я неправильно понял push() предположение о методе. Приведенный ниже код работает так, как ожидалось:

 for (let [index, val] of arr.entries()) {
  if (index % 2 !== 0) {
    console.log("Index: %O", index)
    arr.splice(index, 1, generateNumber(10, 20));
  } else {
    arr.splice(index, 1, generateNumber(20, 30));
  }

}
console.log("Generated array: %O", arr)

for (let index in arr) {
  if (index % 2 !== 0) {
    arr.splice(parseInt(index), 1, generateNumber(30, 60));
  } else {
    arr.splice(parseInt(index), 1, generateNumber(20, 50));
  }
}
  

Спасибо за вашу приверженность.

Комментарии:

1. Array(5) генерирует массив, для length которого уже установлено значение 5, и нажатие на массив просто добавляет элементы с индексом {текущая длина 1}. Присваивайте элементы напрямую через индекс.

2. И if (index % 2 === !0) так не работает, вы отрицаете сравнение с помощью оператора negated, а не отрицаете одно из значений. Это должно было бы быть if (index % 2 !== 0) , но поскольку существует только одна возможная альтернатива первому if здесь, вам лучше начать с создания, чем с else ветки.