js两个字段赋值同一个数组互相影响解决办法

js yekong 326℃

js 当两个字段使用的同一个数组后,当其中一个数组变化了,另外一个数组也会收到影响。

this.list = res.data;
this.list2 = res.data;
var data = {
  sorCount: 0,
  sensorTypeKey: '0',
  sensorList: [],
  sensorTypeVal: '全部'
}
this.list2.unshift(data); list 和 list2数据独立 不彼此影响

在JavaScript中,对象和数组是通过引用进行赋值和传递的。当你执行 this.list2 = res.data; 后, list2res.data 其实指向的是同一块内存地址,也就是说他们其实是同一个对象。所以对 list2 的修改会影响到 res.data,也就影响到 list

解决这个问题的方式是进行深拷贝,创建一个完全独立的副本。这样,对一个数组的修改就不会影响到另一个数组。

this.list = JSON.parse(JSON.stringify(res.data));
this.list2 = JSON.parse(JSON.stringify(res.data));
var data = {
  sorCount: 0,
  sensorTypeKey: '0',
  sensorList: [],
  sensorTypeVal: '全部'
}
this.list2.unshift(data);

在这段代码中,我们使用 JSON.parse(JSON.stringify(res.data)) 来创建一个 res.data 的深拷贝。这种方式简单易用,但是也有一些局限性。比如它不能处理函数和 undefined,在遇到这两种类型的值时,它们会被忽略。如果你的数据中包含这些类型的值,你可能需要使用一些库函数,比如 lodash 的 _.cloneDeep 方法,来创建深拷贝。

喜欢 (0)