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

时间:2019-07-12 03:59:17

标签: arrays angular angular-forms array-splice formgroups

我正在将一个对象推入数组,但是不能这样做?

我正在这样做

this.passData = this.tribeForm.value;
    var id = {"tribe_id": 1}
    this.passData.push(id)

这是tribeForm中的值

enter image description here

我也尝试过

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

2 个答案:

答案 0 :(得分:1)

首先,您需要了解错误:

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

Push/splice/concat Array 的功能,因此控制台向您大喊passData不是Array

确保您的passData是一个数组,您将能够这样做。

答案 1 :(得分:0)

问题不是很清楚,但是我理解您正在处理表单数据,表单数据的值返回一个Object,而不是一个数组。 JavaScript中的对象表示为键值对(或属性值)对。

示例:

var object = {
  name : "Jhon", 
  grade : 12,
  gpa : 8.12
}

它只是键值对的集合,push(),concat()和其他方法仅适用于数组而不适用于对象。您只需创建一个新的键/属性并为其分配值,即可实现所需的任何功能。

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对象的Array。

感谢A2A