typescript 如何执行多阵列滤波

r55awzrz  于 2023-02-10  发布在  TypeScript
关注(0)|答案(1)|浏览(90)

我有两个有共同ID的数组,所以我可以将它们连接在一起,但我需要过滤方面的帮助。
因此,我有一个第一个数组的列表和它前面的复选框。如果我选中一个复选框,我将执行过滤,并显示表内第二个数组中的另一个项目(通过检查共同ID)。
我需要帮助,因为如果我执行多重选择,我希望有多个结果,而不是只有一个。这是它看起来像图像和代码,我正在使用的过滤。
因此,如果我选中第1项和第2项的复选框,我希望在下表中的应用程序数组中有3个结果(id 10,20(x2))。当然,如果我取消选中复选框,它们应该从下表中删除。

let items = [
    {id:1, name:'Item 1', appId:10},
    {id:2, name:'Item 2', appId:20},
    {id:3, name:'Item 3', appId:20},
    {id:4, name:'Item 4', appId:30}
  ]
  
  let apps = [
    {id:10, address:'Some street 1', city:'City 1'},
    {id:20, address:'Some street 2', city:'City 2'},
    {id:20, address:'Some street 2', city:'City 2'},
    {id:30, address:'Some street 3', city:'City 3'}
  ]

this.dataSource = this.items.filter(x => x.appId == apps.id)

谢谢

icnyk63a

icnyk63a1#

如果两个数组相同,则可以用途:

let array1 = [...];
let array2 = [...];
let idx = array1.findIndex(x => x.id === app.id);
let result = [array1[idx], array2[idx]];

否则,可以将两个数组联接在一起并一起筛选:

result = [array1, ...array2].filter(x => x.id === app.id);

相关问题