【发布时间】:2019-09-26 21:21:27
【问题描述】:
我是 Angular 的新手,我正在尝试多维数组。我成功地检索并显示了我的 json 多维数组中的第一级数据。但是,我似乎找不到从数组的第二层检索数据的正确语法。我已经查看了很多多维数组的解决方案,但似乎没有一个适合我想要做的事情。我创建了一个服务组件并将我的代码添加到其中。这是我目前所拥有的:
精简数组定义(实际数组有更多元素和字段):
private _fundraisers: Fundraiser[] = [
{
fundId: 'f1',
fundTitle: 'The happy fund',
items: [
{
itemId: '66',
itemTitle: 'sixTea6'
},
{
itemId: '88',
itemTitle: 'eighTea8',
}]
}
];
我有以下函数使用变量fundId从顶级数组中检索一个元素。
getFundraiser(fundId: string) {
return {...this._fundraisers.find(fundraiser => {
return fundraiser.fundId === fundId;
})};
}
此函数返回fundId 所需的元素和所有“项目”。现在,当用户选择其中一个“项目”时,我只想返回该项目的所有详细信息。因此,如果我正在显示“f1”的记录并且用户选择了“66”项,我想将“f1”和“66”传递给一个函数并返回 f1/66 的详细信息。这是我尝试过的,但没有成功。
getFundraiserItem(fundId: string, itemId: string) {
this._fundraisers.find(fundraiserItem => {
if (fundraiserItem.fundId === fundId) {
console.log(fundraiserItem[0][fundId][0].itemId[0].itemId);
}
});
}
显然我只是使用 console.log 来测试我的代码。因此,console.log 将被某种形式的返回所取代。我试图根据堆栈溢出的其他解决方案将这段代码拼凑在一起。但我可能离题太远了。任何帮助将不胜感激。
【问题讨论】:
-
试试这个
console.log(((this._fundraisers.filter( (fund) => fund.fundId == fundId )) as any[])[0] ? ((this._fundraisers.filter( (fund) => fund.fundId == fundId )) as any[])[0].items.filter( (item:any)=> item.itemId == itemId) : []);
标签: arrays angular typescript