[英]Array of objects filter by another array values
我是 Angular 的新手,並試圖用作數組的過濾器值,即在 object 內部,它在另一個數組內部。 應該過濾的第二個文件包含對象數組。 例如:
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 項。 不幸的是,我找不到任何適用於這種情況的代碼示例。 先感謝您。
您可以修改 PROD 數組以容納數據 object,如下所示。
export const PROD: Prod[] = [
{
id: 1,
name: 'item1',
title: ['param1', 'param3'],
data: [],
},
{
id: 2,
name: 'item2',
title: ['param2', 'param3'],
data: [],
},
];
使用以下函數根據標題中的參數將數據分配給 PROD 數組。 循環遍歷 onInit 中的數組或您各自的 function 以分配數據。
findPartWithParams(param) {
return this.PART.find((e) => e.title === param);
}
ngOnInit() {
this.PROD.forEach((prod) => {
prod.title.forEach((t) => {
prod.data.push(this.findPartWithParams(t).data);
});
});
}
我附上了一個工作的 StackBlitz 叉供參考。
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:[]
}
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.