首页 > 解决方案 > 用另一个数组过滤一个对象数组

问题描述

Array1 = [{id: "1"}.{id: 2},{id: "3"}]


Array2 = [{id: "1"}.{id: 2},{id: "3"}, {id: "4"}, {id: "5"}]

我需要从数组 2 中获取数组 1 中没有的对象;

结果应该是:

ArrayFiltered = [{id: "4"}, {id: "5"}]

那么我怎么能用打字稿做到这一点呢?

标签: typescript

解决方案


没有内置函数可以找到它,因此您需要构建一个。

@Roberto 提供的答案可能是您将得到的最好的答案......

Array2.filter(elem2 => !Array1.some(elem1 => elem1.id === elem2.id)

这里有一些链接

过滤器:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

一些:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some

如果过滤条件在您的用例中更复杂,我建议将回调拉出并将其命名为单独的函数,以便您可以像这样调用它

Array2.filter(el => disjointFilter(Array1, el))


推荐阅读