Понимание оператора спреда в JS - PullRequest
0 голосов
/ 07 декабря 2018

Итак, я попробовал простой пример:

  const original = [
     {id: 0, color: "red"},
     {id: 1, color: "blue"}
      ]
  const copy = [...original]

  copy[0] = {id:2, color:"red"}
  copy[1].id = 2
  console.log(original)
  console.log(copy)

Полученные результаты сбивают с толку:

   Array [Object { id: 0, color: "red" }, Object { id: 2, color: "blue" }]
   Array [Object { id: 2, color: "red" }, Object { id: 2, color: "blue" }]

Когда я изменяю весь объект, изменение происходит только в массиве копий.

Так почему copy [1] .id = 2 на самом деле также изменил исходный массив, а не только ключ в массиве копий ??

1 Ответ

0 голосов
/ 07 декабря 2018

Ответ на этот вопрос зависит в целом от того, что вы подразумеваете под copy.Как копия может быть мелкой, глубокой, и все, что междуЕсли вы просто хотите создать новый массив с мелким клоном ваших объектов, вы можете использовать map с расширением.Например:

const copy = original.map(item => ({ ...item }))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...