Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не могу изменить значение массива с помощью функции

Lasmik Знаток (299), на голосовании 2 недели назад
 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)
}
})
arr = newArray;
return arr
}

foreachArr(arr1);
после выполнение функции сам массив не получает новое значение он вообще не меняеца
Голосование за лучший ответ
Андрей Алексеев Гуру (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 будет содержать новый массив с измененными значениями.
John DoeГуру (3319) 1 месяц назад
и зачем теперь ответы, когда есть нейронки...
Похожие вопросы