Андрей Алексеев
Гуру
(3915)
1 месяц назад
Ваша функция foreachArr создает новый массив newArray, но не изменяет исходный массив arr1. В JavaScript массивы передаются по ссылке, но когда вы присваиваете arr = newArray, вы просто переназначаете локальную переменную arr, а не изменяете сам массив, на который она указывает.
Чтобы изменить исходный массив, вы можете использовать метод splice или просто присвоить новый массив переменной, которая ссылается на исходный массив. Вот один из способов сделать это:
javascript
let arr1 = [1, 2, 3];
function foreachArr(arr) {
let newArray = [];
arr.forEach(function(item) {
if (Array.isArray(item)) {
newArray.push(foreachArr(item)); // Рекурсивно вызываем функцию для вложенных массивов
} else {
newArray.push(0);
}
});
return newArray; // Возвращаем новый массив
}
arr1 = foreachArr(arr1); // Присваиваем результат обратно в arr1
console.log(arr1); // Вывод: [0, 0, 0]
В этом примере мы возвращаем новый массив из функции и присваиваем его обратно переменной arr1. Теперь arr1 будет содержать новый массив с измененными значениями.