为什么当我更改原始数组/对象时更改了复制的数组/对象?

时间:2019-09-04 08:36:37

标签: javascript arrays angular object memory-management

我正在向后端发出HTTP请求,并且从服务器接收到JSON,因此在响应中,我的dataSource设置如下:

  await this.apisService.getList(_token).then((data) => {
  this.arrList = data;
  this.arrListHelper = data; ...

如果我要更改arrList中的某些内容,则帮助程序也要更改,因此我做了一个测试功能来检查我在网上找到的不同方法,只有JSON解析功能可以解决我的问题。我知道为什么会这样,只是我不明白为什么这些解决方案不起作用:

const _aaa = this.arrList.slice();
const _bbb = Object.create(_aaa);
const _ccc = Array.from(_bbb);
const _ddd = { ..._ccc };
const _eee = Object.assign({}, _ddd);
const _fff = JSON.parse(JSON.stringify(_eee));

this.arrList [0]['Name'] = 'ASD';
console.log(_aaa[0]); // ASD
console.log(_bbb[0]); // ASD
console.log(_ccc[0]); // ASD
console.log(_ddd[0]); // ASD
console.log(_eee[0]); // ASD
console.log(_fff[0]); // original

0 个答案:

没有答案