簡體   English   中英

對象數組按另一個數組值過濾

[英]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 叉供參考。

https://stackblitz.com/edit/angular-ivy-12bkcd

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM