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

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

Lasmik Знаток (294), открыт 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);
после выполнение функции сам массив не получает новое значение он вообще не меняеца
1 ответ
Андрей Алексеев Гуру (3874) 2 недели назад
Ваша функция 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 будет содержать новый массив с измененными значениями.
Web masterГуру (3317) 2 недели назад
и зачем теперь ответы, когда есть нейронки...
Похожие вопросы