我是 Angular 的新手,并試圖將其用作陣列的過濾器值,即位于另一個陣列內的物件內部。應該過濾的第二個檔案包含物件陣列。例如:
export const PART: Parts [] = [
{
title: 'param1',
data: 'some data', //required information to get
},
{
title: 'param2',
data: 'other data',
},
{
title: 'param3',
data: 'another data',
}
]
export const PROD: Prod[] = [
{
id: 1,
name: 'item1',
title: ['param1', 'param3']
},
{
id: 2,
name: 'item2',
title: ['param2', 'param3']
}
]
預期結果:item1 在它的描述資料中接收:“一些資料”和“另一個資料”。item2 在它的描述資料中接收:“其他資料”和“另一資料”。我會在模板中為這兩個專案使用 *ngFor 方法。
我需要根據標題“param1”將資料從 const PART 分配給 const PROD 的專案。不幸的是,我找不到任何代碼示例,它適用于這種情況。先感謝您。
uj5u.com熱心網友回復:
prod.map((x)=>{
x.title.map((y)=>{
part.map((z)=>{
if(y == z.title && x.id == 1){
x.data.push(z.data)
}
if(y == z.title && x.id == 2){
x.data.push(z.data)
}
})
})
})
change prod to this add data:[]
[
{
id: 1,
name: 'item1',
title: ['param1', 'param3'],
data:[]
},
{
id: 2,
name: 'item2',
title: ['param2', 'param3'],
data:[]
}
]
uj5u.com熱心網友回復:
修改 PROD 型別如下。
export interface PROD {
id: number;
name: string;
title: string[] | Array<string>;
data: Array<string>;
}
您可以修改 PROD 陣列以容納資料物件,如下所示。
export const PROD: Prod[] = [
{
id: 1,
name: 'item1',
title: ['param1', 'param3'],
data: [],
},
{
id: 2,
name: 'item2',
title: ['param2', 'param3'],
data: [],
},
];
使用以下函式根據標題中的引數將資料分配給 PROD 陣列。回圈遍歷 onInit 或您各自的函式中的陣列以分配資料。
findPartWithParams(param: string): any {
return this.PART.find((e: PART) => e.title === param);
}
ngOnInit() {
this.PROD.forEach((prod: Prod) => {
prod.title.forEach((t: string) => {
prod.data.push(this.findPartWithParams(t).data);
});
});
}
我附上了一個可用的 StackBlitz fork 以供參考。
https://stackblitz.com/edit/angular-ivy-12bkcd
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/390679.html
標籤:javascript 有角的
下一篇:交換可觀察陣列中的元素
