Я пытаюсь прийти к ответу ниже по-другому.
Использование let {items} = user
для деструктуры вместо user.items
.
Но использование let {items} = user
не возвращает исходный измененный массив (добавление "! "до предметов) .
const array = [
{
username: "john",
team: "red",
score: 5,
items: ["ball", "book", "pen"]
},
{
username: "becky",
team: "blue",
score: 10,
items: ["tape", "backpack", "pen"]
},
{
username: "susy",
team: "red",
score: 55,
items: ["ball", "eraser", "pen"]
},
{
username: "tyson",
team: "green",
score: 1,
items: ["book", "pen"]
},
];
Подход 1: Он не меняет элементы в пределах array
и возвращает весь массив без изменений в конце.
// BONUS:
// create a new list with all user information,
// but add "!" to the end of each items they own.
const newList = array.map(user => {
let { items } = user;
items = items.map(item => {
return item + "!"
});
return user;
});
Подход 2: Однако этот способ, похоже, работает.
const answer = array.map(user => {
user.items = user.items.map(item => {
return item + "!"
});
return user;
});
Вот мое наблюдение:
user.items
- это захват элементов внутри array
и последующее возвращение массива с изменениями. , но
let { items } = user
не допускает внесения изменений в возвращаемый массив.
Я бы хотел знать, почему происходит вышеперечисленное.