如何在Angular 7中将对象推入数组?

3
我正在将一个对象推入数组中,但无法完成?
我是这样做的:
this.passData = this.tribeForm.value;
    var id = {"tribe_id": 1}
    this.passData.push(id)

这是tribeForm中的值

在此输入图片描述

我也尝试了

var id = {tribe_id: 1}

并且
this.passData.splice(0,0, id)

并且

this.passData = Array.prototype.slice(id)

并且

this.passData.concat(id)

但最终都归结为


TypeError: this.passData.push/splice/concat is not a function

1
tribeForm is not an array, it's an object. You can not push/concat/slice an object. What instead you can do is this.passData['id']=id - alt255
你能展示一下 this.passData 的值吗? - Chanaka Weerasinghe
如果(!this.passData){ this.passData = [id] } else { this.passData.push(id)}。注意:在typescript中不使用var,而是使用let或const。 - Eliseo
3个回答

3
问题表述不是很清晰,但我理解您在操作表单数据。表单数据的值返回一个对象,而不是数组。在JavaScript中,对象表示为键-值对(或属性-值对)。
示例:
Original Answer翻译成"最初的回答"
var object = {
  name : "Jhon", 
  grade : 12,
  gpa : 8.12
}

这只是一组键值对的集合,push()、concat()和其他方法仅适用于数组而不是对象。您可以通过创建新的键/属性并将值分配给它来实现您想要的任何内容。

原始回答:Original Answer

this.passData = this.tribeForm.value
this.passData['tribe_id'] = 1
//or, Objects can also contain nested object
this.passData['someKey'] = {'tribe_id' : 1} 

你可以创建一个空数组,然后向其中添加对象。
示例:
var exampleArray = []
exampleArray.push({'tribe_id' : 1})

现在它能够工作,是因为exampleArray是一个数组而不是JS对象。
谢谢提问。

2

首先,您需要了解这个错误:

最初的回答:

TypeError: this.passData.push/splice/concat is not a function
< p > Push/splice/concat 是操作Array的函数,因此控制台会提示您passData不是一个Array

确保您的passData是一个数组,您就可以使用这些函数了。

< p >"Original Answer"翻译成中文是"最初的回答"。


0
这是一个简单的答案,也有多个宾语的情况。
      this.passData.push({ tribe_id: 1, name: "lorm ipsum" });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接