Javascript 如何在angular中创建非链接变量?

Javascript 如何在angular中创建非链接变量?,javascript,arrays,json,angular,rest,Javascript,Arrays,Json,Angular,Rest,我需要从服务器(或json文件)获取数据,并将它们添加到“firstVariable”中,以便对其进行一些操作,而“secondVariable”则用于默认的未更改数据(来自服务器的相同数据)。但当我在“firstVariable”中更改数据时,它们也在“secondVariable”中更改。我的问题:为什么?当我将数据添加到变量中时,我会从变量中创建新的数组。 存在一个问题是,当您使用扩展操作符[…data]时,您正在扩展对数组中对象的引用 您要做的是将对象映射到新的对象引用中,您可以执行以下

我需要从服务器(或json文件)获取数据,并将它们添加到“firstVariable”中,以便对其进行一些操作,而“secondVariable”则用于默认的未更改数据(来自服务器的相同数据)。但当我在“firstVariable”中更改数据时,它们也在“secondVariable”中更改。我的问题:为什么?当我将数据添加到变量中时,我会从变量中创建新的数组。
存在一个

问题是,当您使用扩展操作符
[…data]
时,您正在扩展对数组中对象的引用

您要做的是将对象映射到新的对象引用中,您可以执行以下操作

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

请参阅以下代码段

let data=[{id:123}];
设a=[…数据];
设b=[…数据];
a[0].id=1234;
log('不创建新对象');
数据=[{id:123}];
log(`A:${JSON.stringify(A)}`);
log(`B:${JSON.stringify(B)}`);
设c=data.map(x=>Object.assign({},x));
设d=data.map(x=>Object.assign({},x));
c[0].id=9999;
log(“创建新对象”);
log(`C:${JSON.stringify(C)}`);

log(`D:${JSON.stringify(D)}`)因为您正在操作相同的引用类型。添加
console.log(数据),您将看到数据是一个对象数组,将其传递给新数组不会改变新数组将接收指向相同实例的指针的事实