Установите переменную в массив объектов с javascript - PullRequest
1 голос
/ 26 апреля 2020

У меня есть массив объектов с именем objectArray1. Я хотел бы установить вторую переменную, objectArray2, в значение этого первого массива, а затем иметь возможность изменить его независимо.

Вот код, который я пробовал:

var objectArray1 = [
  {number:1, color:'red'},
  {number:4, color:'blue'}
];

var objectArray2 = objectArray1;

objectArray2[0].number = 7;
console.log(objectArray1);

Однако, как видно из приведенного выше фрагмента, изменение значения в objectArray2 также изменяет то же значение в objectArray1 (1 изменяется на 7).

Я нашел несколько других вопросов по стеку потока по этому поводу, таких как Установка одного объекта равным другому объекту с помощью оператора присваивания в Javascript, но все они просто об объектах, а не массивах объектов, поэтому я не смог применить их к своему делу.

Чтобы попытаться исправить мою проблему, я попробовал новый код, который, как я надеялся, будет работать лучше:

var objectArray1 = [
  {number:1, color:'red'},
  {number:4, color:'blue'}
];

var objectArray2 = [];

for (i = 0; i < objectArray1.length; i++) {
  objectArray2.push(objectArray1[i]);
}

objectArray2[0].number = 7;
console.log(objectArray1);

Тем не менее, происходит то же самое (1 по-прежнему меняется на 7). Как мне это решить?

Ответы [ 2 ]

2 голосов
/ 26 апреля 2020

Чтобы сделать клон этого, вам просто нужно сделать

var objectArray1 = [
  {number:1, color:'red'},
  {number:4, color:'blue'}
];

var objectArray2 = JSON.parse(JSON.stringify(objectArray1));

И это на самом деле создаст новую копию объектов, а не просто ссылается на них, и вы сможете работать с отдельно подобными ты хочешь.

2 голосов
/ 26 апреля 2020

U просто нужно использовать оператор распространения.

var objectArray1 = [
  {number:1, color:'red'},
  {number:4, color:'blue'}
];

var objectArray2 = JSON.parse(JSON.stringify(objectArray1 ));

objectArray2[0].number = 7;
console.log(objectArray1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...