在某个索引 typescript / angular 9 处推送或拼接对象数组?
Push or Splice onto array of objects at a certain index typescript / angular 9?
我在一个名为 'houseList = []' 的数组上有一个对象数组 - 数据如下所示:
0: {houseCode: '1234', street: 'Grove Street'}
1: {houseCode: '5678', street: 'Pike Street'}
2: {houseCode: '9010', street: 'Park Street'}
我正在尝试遍历该数据并向对象添加特定索引 - 我想将以下 属性 添加到对象 #1, 以便数组中的数据对象看起来像这样:
0: {houseCode: '1234', street: 'Grove Street'}
1: {houseCode: '5678', street: 'Pike Street', parking: 'True'}
2: {houseCode: '9010', street: 'Park Street'}
到目前为止,我已经尝试推动对象数组,但没有成功。我这样做的功能如下。我收到错误消息“ERROR TypeError: this.houseList[i].push is not a function.
for(let i = 0; i < this.houseList.length; i++) {
if (i === 1) {
this.houseList[i].push({parking: this.ParkingIsTrue})
}
}
我也尝试过拼接,但那只是在数组上创建了一个新对象。这是我的拼接功能代码:
for(let i = 0; i < this.houseList.length; i++) {
if (i === 1) {
this.houseList.splice(i, 0, this.ParkingIsTrue))
}
}
拼接结果为:
0: {houseCode: '1234', street: 'Grove Street'}
1: {houseCode: '5678', street: 'Pike Street'}
2: {'True'}
3: {houseCode: '9010', street: 'Park Street'}
我的问题是,我实际上如何编写所需的数据添加?
您要做的不涉及编辑数组,只编辑该数组的 属性。 Array.prototype.push and Array.prototype.splice 用于向数组添加元素和从数组中删除元素,这不是您想要在此处使用的内容。相反,您只想在数组的第一个索引处的对象上设置 属性,您可以这样做:
this.houseList[1].parking = this.ParkingIsTrue;
当然,您可能需要稍微调整一下,具体取决于您需要如何确定数组中的哪个元素需要编辑,以及它的值需要是多少。但我希望该示例至少是您需要使用的语法的有用指南。
您收到错误“错误类型错误:this.houseList[i].push 不是函数”的原因是 this.houseList[i]
解析为 {houseCode: '5678', street: 'Pike Street'}
这样的对象。此值不是数组,也没有 push
方法,因此 this.houseList[i].push
解析为 undefined
.
然后当您尝试像调用函数一样调用它时,您会收到一条错误消息,抱怨它不是函数,因为,好吧,它不是函数。这是 undefined
。
您可以将 parking
属性 添加到对象,如下所示:
this.houseList.splice(i, 0, {
...this.houseList[i],
parking: this.ParkingIsTrue,
});
参考资料
我在一个名为 'houseList = []' 的数组上有一个对象数组 - 数据如下所示:
0: {houseCode: '1234', street: 'Grove Street'}
1: {houseCode: '5678', street: 'Pike Street'}
2: {houseCode: '9010', street: 'Park Street'}
我正在尝试遍历该数据并向对象添加特定索引 - 我想将以下 属性 添加到对象 #1, 以便数组中的数据对象看起来像这样:
0: {houseCode: '1234', street: 'Grove Street'}
1: {houseCode: '5678', street: 'Pike Street', parking: 'True'}
2: {houseCode: '9010', street: 'Park Street'}
到目前为止,我已经尝试推动对象数组,但没有成功。我这样做的功能如下。我收到错误消息“ERROR TypeError: this.houseList[i].push is not a function.
for(let i = 0; i < this.houseList.length; i++) {
if (i === 1) {
this.houseList[i].push({parking: this.ParkingIsTrue})
}
}
我也尝试过拼接,但那只是在数组上创建了一个新对象。这是我的拼接功能代码:
for(let i = 0; i < this.houseList.length; i++) {
if (i === 1) {
this.houseList.splice(i, 0, this.ParkingIsTrue))
}
}
拼接结果为:
0: {houseCode: '1234', street: 'Grove Street'}
1: {houseCode: '5678', street: 'Pike Street'}
2: {'True'}
3: {houseCode: '9010', street: 'Park Street'}
我的问题是,我实际上如何编写所需的数据添加?
您要做的不涉及编辑数组,只编辑该数组的 属性。 Array.prototype.push and Array.prototype.splice 用于向数组添加元素和从数组中删除元素,这不是您想要在此处使用的内容。相反,您只想在数组的第一个索引处的对象上设置 属性,您可以这样做:
this.houseList[1].parking = this.ParkingIsTrue;
当然,您可能需要稍微调整一下,具体取决于您需要如何确定数组中的哪个元素需要编辑,以及它的值需要是多少。但我希望该示例至少是您需要使用的语法的有用指南。
您收到错误“错误类型错误:this.houseList[i].push 不是函数”的原因是 this.houseList[i]
解析为 {houseCode: '5678', street: 'Pike Street'}
这样的对象。此值不是数组,也没有 push
方法,因此 this.houseList[i].push
解析为 undefined
.
然后当您尝试像调用函数一样调用它时,您会收到一条错误消息,抱怨它不是函数,因为,好吧,它不是函数。这是 undefined
。
您可以将 parking
属性 添加到对象,如下所示:
this.houseList.splice(i, 0, {
...this.houseList[i],
parking: this.ParkingIsTrue,
});