首页 > 解决方案 > 如何通过比较打字稿中的两个数组对象来获取不同的元素

问题描述

我从 2 个数组对象中获取不同的元素时遇到问题。我的例子是这样的:

array1= [{id: 1, a: "a", b: "b"}, {id: 2, c: "c", d: "d"}, {id: 3, e: "e", f: "f"}];
array2 = [{c: "c", d: "d"}];

我的预期是:

输出结果是这样的:

每个对象中的这个 id 都不相关。

result =[{a: "a", b: "b"},{e: "e", f: "f"}];

我曾尝试在打字稿中使用过滤器或查找,但它不起作用。

有什么解决办法??

标签: arraystypescriptobject

解决方案


使用lodashpackage 及其isEqual方法,它可能看起来像这样:

const _ = require('lodash');

array1= [{id: 1, a: "a", b: "b"}, {id: 2, c: "c", d: "d"}, {id: 3, e: "e", f: "f"}];
array2 = [{c: "c", d: "d"}];

const results = array1.filter(item => !array2.some(item2 => _.isEqual(_.omit(item, ['id']), _.omit(item2, ['id']))))

这样您就可以将对象与多于一层的道具进行比较


推荐阅读