Как создать несвязанную переменную в угловых? - PullRequest
0 голосов
/ 12 марта 2019

Мне нужно получить данные с сервера (или из файла json) и добавить их в «firstVariable» для некоторых манипуляций с ним и «secondVariable» для неизмененных данных по умолчанию (те же данные с сервера). Но когда я изменяю данные в firstVariable, они также меняются во secondVariable. Мой вопрос: почему? Когда я добавляю данные в переменные, я создаю из них новый массив. Есть пример

1 Ответ

1 голос
/ 13 марта 2019

Проблема, с которой вы столкнулись, заключается в том, что когда вы используете оператор распространения [...data], вы распространяете ссылку на объекты внутри массива.

Вместо этого вы хотите отобразить объекты вНовая ссылка на объект, вы можете сделать что-то вроде

this.json = data.map(x => Object.assign({}, x));

См. следующий фрагмент.

let data = [{ id: 123 }];

let a = [...data];
let b = [...data];

a[0].id= 1234;

console.log('Without creating a new object');
data = [{ id: 123 }];
console.log(`A: ${JSON.stringify(a)}`);
console.log(`B: ${JSON.stringify(b)}`);


let c = data.map(x => Object.assign({}, x));
let d = data.map(x => Object.assign({}, x));

c[0].id= 9999;

console.log('Creating a new object');
console.log(`C: ${JSON.stringify(c)}`);
console.log(`D: ${JSON.stringify(d)}`);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...