Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему метод map() изменяет исходный массив (https://javascript.ru/forum/misc/82430-pochemu-metod-map-izmenyaet-iskhodnyjj-massiv.html)

slark 05.05.2021 18:25

Почему метод map() изменяет исходный массив
 
Добрый день в документации написано что метод массива map() не изменяет исходный массив, проверял всё верно.

Однако если применть метод map(), к массиву объектов, то исходный массив изменяется, пример:

const names = [
    { name: 'Ivan ',  age: 33 },
    { name: ' Petr',  age: 45 },
    { name: '   Sidor', age: 27 }
]

const namesTrim = names.map( item => {
    item.name = item.name.trim()
    return item
})

console.log(names)     // пробелы исчезли тоже
console.log(namesTrim)


В исходном массиве names пробелы тоже пропали.
Почему так происходит?

рони 05.05.2021 18:32

Цитата:

Сообщение от slark
Почему так происходит?

читать https://learn.javascript.ru/object-copy

рони 05.05.2021 18:39

slark,
на всякий случай, если нет "объектов в объекте"
const names = [
    { name: 'Ivan ',  age: 33 },
    { name: ' Petr',  age: 45 },
    { name: '   Sidor', age: 27 }
]

const namesTrim = names.map( item => {
    let name = item.name.trim()
    return {...item, name}
})

console.log(names)
console.log(namesTrim)

ksa 05.05.2021 19:37

Цитата:

Сообщение от slark
В исходном массиве names пробелы тоже пропали.

Не в массиве, а в свойствах объектов...
map возвращает новый массив, но ссылки на объекты в тех массивах одинаковые.

slark 15.05.2021 09:27

ясно спасибо


Часовой пояс GMT +3, время: 16:01.