从数组Angular 2中过滤数据

Jee*_*mar 0 arrays mapping filter angular

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

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

数据1:

[
  {
    "id": 2,
    "name": "data 2",
  },
  {
    "id": 3,
    "name": "data 3",
  }
]
Run Code Online (Sandbox Code Playgroud)

数据2:

[
  {
    "id": 2,
    "name": "data 2"
  },
  {
    "id": 3,
    "name": "data 3"
  },
  {
    "id": 4,
    "name": "data 4"
  }
]
Run Code Online (Sandbox Code Playgroud)

它应该返回低于输出.

[
{
    "id": 4,
    "name": "data 4"
}
]
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Eek*_*s33 6

您正在寻找的是2个对象数组的区别,请参阅:JavaScript中两个对象数组之间的差异

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

let ids = data1.map(item => item.id);
let filteredData = data2.filter(item => ids.indexOf(item.id) === -1);
Run Code Online (Sandbox Code Playgroud)