5 of 17 menu

Грешка при промяна на елемент от масив в JavaScript

Нека разгледаме грешката, която възниква при неправилна промяна на елемент от масив. Да предположим, че имаме следния масив:

let arr = [1, 2, 3, 4, 5];

Да предположим също, че имаме функция, която приема число като параметър и връща квадрата на това число:

function func(num) { return num ** 2; }

Нека с помощта на цикъл for-of обходим нашия масив и приложим нашата функция към всеки от неговите елементи:

for (let elem of arr) { elem = func(elem); }

На това място начинаещите често правят грешка. Работата е там, че промяната на променливата elem не води до промяна на елемента в самия масив. Нека се уверим в това:

console.log(arr); // масивът не се е променил

Масивът не се променя, защото в променливата elem се съхранява копие на елемента, а не референция към него. Промяната на elem влияе на копието, но не и на самия масив.

За решаване на проблема трябва да се променят точно елементите на масива:

for (let i = 0; i < arr.length; i++) { arr[i] = func(arr[i]); } console.log(arr); // сега масивът се е променил
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне