从数组Angular 2中过滤数据

时间:2017-05-12 15:58:52

标签: arrays angular filter mapping

我有2 arrays,我想根据列值过滤数据。我使用下面的代码,但它无法正常工作。

const result = data.map(data1 => {
            return Object.assign({}, data1, this.data2.filter(data2 => data2.Id !== data1.Id)[0]);
        });

数据1:

[
  {
    "id": 2,
    "name": "data 2",
  },
  {
    "id": 3,
    "name": "data 3",
  }
]

数据2:

[
  {
    "id": 2,
    "name": "data 2"
  },
  {
    "id": 3,
    "name": "data 3"
  },
  {
    "id": 4,
    "name": "data 4"
  }
]

它应该返回低于输出。

[
{
    "id": 4,
    "name": "data 4"
}
]

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

您要查找的是2个对象数组的差异,请参阅:Difference between two array of objects in JavaScript

您还可以使用以下纯粹的ID:

let ids = data1.map(item => item.id);
let filteredData = data2.filter(item => ids.indexOf(item.id) === -1);