我听不懂,请解释!
我有一个数据表,并且在.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吗?
非常感谢!
答案 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的目的相矛盾。