在多个数组中复制一个对象数组
2020-01-08
133
我想将一个对象数组复制到多个对象数组中,因为我需要在不同的地方使用它们中的每一个。
if(!this.tempLookups){
for (let count = 0; count < this.dates.length; count++) {
this.tempLookups[count] = this.lookups[key];
}
}
错误:未捕获(在承诺中)TypeError:无法设置 null 的属性“0”
2个回答
错误的实际原因显然是在错误消息中,您正尝试将属性设置为
null
。因此,为了修复它,只需在 if 之后定义它即可。
if(!this.tempLookups){
his.tempLookups = [];
for (let count = 0; count < this.dates.length; count++) {
this.tempLookups[count] = this.lookups[key];
}
}
您可以使用
Array#fill
方法在一行中完成此操作,而无需
for
循环,因为您使用的是相同的值。
if(!this.tempLookups){
this.tempLookups = new Array(this.dates.length).fill(this.lookups[key]);
}
Pranav C Balan
2020-01-08
您可以这样做:
if (!this.tempLookups) {
this.tempLookups = [];
for (let i = 0; i < this.dates.length; i++) {
this.tempLookups.push(Array.from(this.lookups[key]));
}
}
请注意,在我们开始插入数据之前,
this.tempLookups
变量被初始化为空数组。
for
循环中的
Array.from
调用确保我们实际创建了
this.lookups[key]
数组的(浅)副本,而不是仅多次分配对同一
this.lookups[key]
数组的引用。如果没有
Array.from
,更改一个数组会更改所有数组 - 因为实际上只有一个数组被多次引用。
TeWu
2020-01-08