@elmira26

Javascript/for loop: При решении задачи на 1 и 2 индексе возвращает null. В чем ошибка?

Здравствуйте решаю задачу: Написать функцию, принимающую массив (а) и число(n) возвращающую новый массив длинной больше а в n раз, содержащий n раз числа из а.
Вот что пока получается:
function arrayNtimes(a,n){
    
    var newArr = [];

    for(i = 0; i<= n; i++){
     newArr[i] = a[i];
    
   }
   return  newArr;
 }

результат получается вот такой: Ошибка: Неверный результат. При вызове arrayNtimes([1,5],3) получено [1,5,null,null], ожидалось [1,5,1,5,1,5]

Пожалуйста подскажите где я ошибаюсь..
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
for(i = 0

На конечный результат не влияет, но переменная i должна быть объявлена. Погуглите, что происходит, если выполнить присваивание необъявленной переменной.

i<= n;

Неправильное количество итераций. Например, массив из десяти элементов, повторить пять раз - какая должна быть длина результирующего массива? Очевидно, 50 - произведение длины исходного массива и количества повторений. Вам почему-то кажется, что 5. Вернее 6 - индексация начинается с 0.

newArr[i] = a[i];

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

Т.е., должно быть как-то так.
function arrayNtimes(a, n) {
  const newArr = [];

  for (let i = 0; i < n * a.length; i++) {
    newArr[i] = a[i % a.length];
  }

  return newArr;
}


Но можно и покороче.
const arrayNtimes = (a, n) => Array(n).fill(a).flat();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы