const nestedArr = [];
// ADD CODE HERE
let arr = [];
for(let i=0; i<5; i++){
arr.push(`loop${i}`, i);
nestedArr.push(arr);
// nestedArr.push([`loop${i}`, i]);
}
console.log(nestedArr)
Привет, ребята, просто интересно, какое поведение JS я не понимаю.Задача решается, когда используется закомментированная строка в сером // nestedArr.push([
цикле $ {i} , i]);
, но когда я пытаюсь использовать другой подход без комментариев
arr.push(`loop${i}`, i);
nestedArr.push(arr);
не работает, как я думал.
Подход заключается в том, чтобы сначала объявить массив arr
и вставлять в него каждые 5 итераций строку loop${i}
и индекс второго элемента i
.Затем вставьте массив arr
в nestedArr
в течение 5 итераций.Ожидаемый результат, если arr помещается 5 раз в nestedArr, причем каждый push предположительно добавляет один элемент за раз в пределах arr.Тем не менее, как вы можете видеть, толкаемые подмассивы arr толкаются, удерживая по 5 элементов каждые 5 раз.Я ожидал, что первая итерация будет равна 0, когда массив подмассивов, помещенный в nestedArr, будет содержать только один элемент, но уже содержит 5 таких же элементов с другими подмассивами.
[['loop0', 0, 'loop1', 1, 'loop2', 2, 'loop3', 3, 'loop4', 4], ['loop0', 0, 'loop1', 1, 'loop2', 2, 'loop3', 3, 'loop4', 4], ['loop0', 0, 'loop1', 1, 'loop2', 2, 'loop3', 3, 'loop4', 4], ['loop0', 0, 'loop1', 1, 'loop2', 2, 'loop3', 3, 'loop4', 4], ['loop0', 0, 'loop1', 1, 'loop2', 2, 'loop3', 3, 'loop4', 4]]
ожидаемый результат должен быть
[['loop0', 0], ['loop1', 1], ['loop2', 2], ['loop3', 3], ['loop4', 4]]
С каждой итерацией для добавления одного элемента за раз в подмассивном массиве, который затем передается в nestedArr в течение 5 итераций.Есть идеи, почему?