开发者问题收集

在多个数组中复制一个对象数组

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