对象数组的角度提取字段

时间:2020-05-27 16:08:24

标签: arrays angular typescript

我听不懂,请解释!

我有一个数据表,并且在.ts中生成的行选择生成了一个Operation对象数组。这是我的对象类:

export class Operation {
  id: number;
  name: string;
}

这是数组的声明:

selectedOperations: Operation[]; 

在提取ID之前登录控制台时,我有这个消息:

this.selectedOperations = {"selected":[{"id":1,"name":"My name 1"},{"id":3,"name":"My name 3"}]}

,当我想使用以下方法提取ID时:

let ids = this.selectedOperations.map(o => o.id);

我有一个例外=>

this.selectedOperations.map is not a function

这不是我第一次遇到这个问题,我想了解为什么。我搜索了一些原因,发现Array和object []之间有区别?我认为这并不是一个数组,因为在数组之前有 {“ selected”: ...

有人可以告诉我这件事,并帮助我提取ID吗?

非常感谢!

2 个答案:

答案 0 :(得分:0)

您需要对代码进行一些改进。为了获取ids,您需要向selected添加this.selectedOperations。见下文。

let ids = this.selectedOperations.selected.map(o => o.id);

答案 1 :(得分:0)

{“ selected”:[{“ id”:1,“ name”:“我的名字1”},{“ id”:3,“ name”:“我的名字3”}]} =>这是类型的对象,而您的数组声明看起来像以下selectedOperations:Operation [];

您可以直接将数组分配给变量:

this.selectedOperations = [{"id":1,"name":"My name 1"},{"id":3,"name":"My name 3"}];

或者您可以将变量类型更改为任意或对象:

selectedOperations: any;

this.selectedOperations = {"selected":[{"id":1,"name":"My name 1"},{"id":3,"name":"My name 3"}]}

const ids = this.selectedOperations.selected.map(o => o.id);

this.selectedOperations.map不是函数错误是由初始化引起的,map函数是为数组保留的,因此当您尝试在对象类型变量上使用它时会引发错误。

我将建议第一种方法,将变量声明为任何变量或对象与Typescript的目的相矛盾。