Arrays 如何从另一个阵列获取具有已批准ID的项目?map()过滤器()还是?
嗨,我不知道如何仅获取此项(包含对象的数组) 哪一个已经批准了身份证?基本上,我不知道先做什么Arrays 如何从另一个阵列获取具有已批准ID的项目?map()过滤器()还是?,arrays,angular,typescript,dictionary,filter,Arrays,Angular,Typescript,Dictionary,Filter,嗨,我不知道如何仅获取此项(包含对象的数组) 哪一个已经批准了身份证?基本上,我不知道先做什么map()然后filter()或filter()他们map() 您可以使用过滤器() 试着这样做: public getApprovedItems(): any[] { return this.items.filter(x => this.approvedId.includes(x.id)) } 希望此解决方案适用于您: public getApprovedItems(): any {
map()
然后filter()
或filter()
他们map()
您可以使用过滤器()
试着这样做:
public getApprovedItems(): any[] {
return this.items.filter(x => this.approvedId.includes(x.id))
}
希望此解决方案适用于您:
public getApprovedItems(): any {
this.items.map((singleObject) => {
if(this.approvedId.includes(singleObject.id)){
console.log(singleObject);
//{id: 535345, code: "432gdh4356"}
// {id: 978767, code: "eaw32134dd"}
}
});
尝试使用筛选器:
items = [
{ id: 535345, code: '432gdh4356' },
{ id: 634586, code: 'irdtry4567' },
{ id: 124315, code: 'fgdt43104f' },
{ id: 978767, code: 'eaw32134dd' }
];
approvedId = [ 535345, 978767 ];
public getApprovedItems(): any {
return this.items.filter(item => this.approvedId.includes(item.id))
}
请考虑使用函数的结果进行打字。
export interface Code {
id: number;
code: string;
}
export class AppComponent {
name = 'Angular';
items: Code[] = [
{ id: 535345, code: '432gdh4356' },
{ id: 634586, code: 'irdtry4567' },
{ id: 124315, code: 'fgdt43104f' },
{ id: 978767, code: 'eaw32134dd' }
];
approvedItems: Code[];
approvedId: number[] = [ 535345, 978767 ];
ngOnInit() {
this.approvedItems = this.getApprovedItems();
}
public getApprovedItems(): Code[] {
return this.items.filter((x: Code) => this.approvedId.includes(x.id);
}
}
我想我们都可以试着在回答问题时多一些教育。使用过滤器的答案肯定是好的,并且是有效的。但它为什么会起作用呢?为什么OP会考虑使用map() 以下是我的答案: 您根本不必使用
map()
。您可能知道,.map()
方法将函数应用于列表中的所有项。认为在每个项目上映射(应用)过滤器函数是有意义的。的确如此!只是,这正是.filter()
方法所做的.filter()
的工作原理与.map()
完全相同,因为它将函数应用于数组中的每个元素。但是,.filter()
需要一个返回布尔值(true/false)的函数。如果函数返回值为true,则。filter()
会将其添加到返回数组中,否则如果为false,则不会将其添加到返回数组中。这就是为什么在这种情况下我们只需要使用.filter()
一些代码深受MoxxiManagarm答案的启发(主要是添加注释):
请不要退货。至少表明它是一个数组,它只是一个输出,你为什么还要用map呢?我不明白你的意思。你能详细解释一下吗。投票失败的原因是什么?你的地图没有映射任何东西通过地图,我可以得到特定的物体,我可以在上面检查条件。因此,我使用了映射。您也可以通过其他操作(如foreach和filter)获得这个特定项。我想说的是,你们使用地图的方式完全错误。您的函数可能会将正确的值打印到控制台,但不会返回它们。这不是您使用地图的方式。请不要返回任何地图。至少表明这是一个数组请允许我提及,您的
getApprovedItems
结果未被使用。
export interface Code {
id: number;
code: string;
}
export class AppComponent {
name = 'Angular';
items: Code[] = [
{ id: 535345, code: '432gdh4356' },
{ id: 634586, code: 'irdtry4567' },
{ id: 124315, code: 'fgdt43104f' },
{ id: 978767, code: 'eaw32134dd' }
];
approvedItems: Code[];
approvedId: number[] = [ 535345, 978767 ];
ngOnInit() {
this.approvedItems = this.getApprovedItems();
}
public getApprovedItems(): Code[] {
return this.items.filter((x: Code) => this.approvedId.includes(x.id);
}
}
export interface Code {
id: number;
code: string;
}
export class AppComponent {
name = 'Angular';
items: Code[] = [
{ id: 535345, code: '432gdh4356' },
{ id: 634586, code: 'irdtry4567' },
{ id: 124315, code: 'fgdt43104f' },
{ id: 978767, code: 'eaw32134dd' }
];
approvedItems: Code[];
approvedId: number[] = [ 535345, 978767 ];
ngOnInit() {
this.approvedItems = this.getApprovedItems();
}
public getApprovedItems(): Code[] {
// (item: Code) => this.approvedId.includes(item.id) will return true if
// the item's id is included in the approvedId array and therefore add it
// to the returning array
return this.items.filter((item: Code) => this.approvedId.includes(item.id));
}
}