Angular通过过滤器比较2个数组

时间:2019-12-22 21:27:51

标签: angular typescript

我有2个数组,我只需要显示与第一个数组匹配的数据。

示例

第一个数组就像

["1", "2" , "3"]

秒就像

[{"name": "xyz", "id": "1"},{"name":"abc", "id": "3"}, ,{"name":"def", "id": "4"}]

结果

[{"name": "xyz", "id": "1"},{"name":"abc", "id": "3"}}

我尝试这样,但显示空数组

console.log(this.secondArr.filter(d => d.id === firstArr));

2 个答案:

答案 0 :(得分:5)

您需要将其与数组中的每个条目进行比较,而不是与数组本身进行比较:

this.secondArr.filter(d => firstArray.some(arrEntry => arrEntry === d.id))

答案 1 :(得分:0)

您也可以使用indexOf

var firstArr = ["1", "2" , "3"];
var secondArr = [{"name": "xyz", "id": "1"},{"name":"abc", "id": "3"}, ,{"name":"def", "id": "4"}];

console.log(secondArr.filter(d => firstArr.indexOf(d.id) >= 0));