Сгенерировать массив фиксированной длины, но push() и shift() для продолжения изменения значений?

#javascript #arrays

#javascript #массивы

Вопрос:

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

Что я хотел бы иметь возможность делать, так это постоянно генерировать числа (в разумных пределах! Скажем, до 500 итераций, например), но всегда сохраняйте только 5 чисел в массиве.

Я пытался вставить новые числа в массив, а затем переместить массив, но что-то не работает. Мой текущий код:

 let initArray = [];

function makeArray() {
  do {
    let val = Math.floor(Math.random() * 9)
    initArray.push(val)
    i  
  }
  while (i < 500)
}

function shiftArray() {

if (initArray.length > 5) {
    initArray.shift();
  }
}
 

Я новичок, поэтому я уверен, что пропустил что-то основное, но я хотел бы знать, что это такое!

Большое вам спасибо!

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

1. Поскольку массивы в JS также являются объектами (на самом деле все является объектом в JS), вы могли бы сделать что-то вроде этого: const initArray = [1,2,3]; initArray[1] = 4;

Ответ №1:

Было две проблемы:

Ответ: i не был определен

B: вы не вызывали shiftArray() .

 let initArray = [];
i=0; // define i
function makeArray() {
  do {
    let val = Math.floor(Math.random() * 9)
    initArray.push(val);
    shiftArray(); //call shiftArray
    console.log(initArray);
    i  ;
  }
  while (i < 100) //reduced to prevent computers from screaming
}

function shiftArray() {

if (initArray.length > 5) {
    initArray.shift();
  }
}
makeArray();