在某个索引打字稿/角度 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 处推送或拼接到对象数组上?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过两个对象打字稿角度6进行比较

如何在打字稿文件中推送字符串? [关闭]

在角度/打字稿中将类创建为可迭代

如何在打字稿中使用可能的字符串和数字索引确定对象的类型?

角度打字稿页面上的数组为空

如何在具有角度注入参数的打字稿中创建新对象