在某个索引打字稿/角度 9 处推送或拼接到对象数组上?
Posted
技术标签:
【中文标题】在某个索引打字稿/角度 9 处推送或拼接到对象数组上?【英文标题】:Push or Splice onto array of objects at a certain index typescript / angular 9? 【发布时间】:2021-12-07 18:55:32 【问题描述】:我在一个名为“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'
到目前为止,我已经尝试推进对象数组,但没有成功。我这样做的功能如下。我收到“错误类型错误:this.houseList[i].push 不是函数。
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'
我的问题是,我该如何编写所需的数据添加?
【问题讨论】:
【参考方案1】:您可以将parking
属性附加到对象,如下所示:
this.houseList.splice(i, 0,
...this.houseList[i],
parking: this.ParkingIsTrue,
);
Sample Solution on StackBlitz
参考文献
javascript Ellipsis: Three dots ( … ) in JavaScript
【讨论】:
【参考方案2】:您想要做的不涉及编辑数组,只编辑该数组的属性。 Array.prototype.push 和 Array.prototype.splice 用于在数组中添加和删除元素,这不是您想在此处使用的。相反,您只想在数组的第一个索引处设置对象的属性,您可以这样做:
this.houseList[1].parking = this.ParkingIsTrue;
当然,您可能需要稍微调整一下,具体取决于您需要如何确定数组中的哪个元素需要编辑,以及它的值需要是什么。但我希望该示例至少是您需要使用的语法的有用指南。
您收到错误“ERROR TypeError: this.houseList[i].push is not a function”的原因是 this.houseList[i]
解析为像 houseCode: '5678', street: 'Pike Street'
这样的对象。该值不是数组,也没有push
方法,所以this.houseList[i].push
解析为undefined
。
当您尝试像调用函数一样调用它时,您会收到一个错误,抱怨它不是函数,因为,好吧,它不是函数。是undefined
。
【讨论】:
以上是关于在某个索引打字稿/角度 9 处推送或拼接到对象数组上?的主要内容,如果未能解决你的问题,请参考以下文章