Каким образом метод map примененный к копии массива меняет оригинал массива clients ?
const clients = [
{ name: 'Alex',town: 'Sitka',debt: false },
{ name: 'Bob',town: 'Phoenix',debt: false },
{ name: 'Pol',town: 'LosAngeles',debt: true },
{ name: 'Roy',town: 'Buckeye',debt: false },
{ name: 'Brad',town: 'Dallas',debt: false },
{ name: 'Leny',town: 'Charlotte',debt: true },
{ name: 'Peny',town: 'Hibbing',debt: false },
]
const clientsCopy1 = clients.slice();// делаем копию массива clients;
const clientsCopy2 = [...clientsCopy1]; // делаем копию массива clientsCopy1
const clientsCopy3 = clientsCopy2.map(i => { // перебираем вторую копию
методом map
i.name = i.name.toUpperCase()
return i;
})
console.log(clients); // исходный массив тоже изменился!
Использование других способов копирования дает тот-же результат.
Такое поведение только с методом map.
При модификации копий массивов другими способами, исходный массив остается
без изменений.
.slice не копирует объекты внутри массива. Он копирует размер массива и ссылки на объекты которые лежат в массиве.
Чтобы сделать полную копию надо превратить в JSON и распарсить обратно. Это самый быстрый способ, но он не позволяет сохранить информацию о классах (однако, вам тут это и не надо).
const clientsCopy1 = JSON.parse(JSON.stringify(clients));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
День добрый! Столкнулись с проблемой, с которой не получается справиться самостоятельноНа данный момент, в некоторых блоках при прокрутке...
Нужно проверить по keyCode, нажата ли клавиша в данный момент, не используя keyupЯ не прошу готового кода, но даже не представляю, в каком направлении...
Через AJAX вызывается PHP файл, который возвращает мне числа, разделенные через запятуюДалее мне нужно разбить их на массив и обработать