首页 > 解决方案 > 根据另一个列表中的内容过滤对象列表的最简单方法是什么?

问题描述

我写了太多行来比较,然后根据两者中的内容过滤对象列表。我怎样才能简化它?

const list1 = [{ name: 'John' }, { name: 'Marie' }, { name: 'Carl' }, ]

const list2 = [{ firstName: 'John' }, { firstName: 'Peter' }, { firstName: 'Carl' }, ]

期望的结果:[{ name: 'John' }, { name: 'Carl' }]

注意:获取list1其中键为 的对象name

标签: javascript

解决方案


为此,请使用Array#filterArray#some。过滤来自 arr1 的每个对象,其中对于 arr2 的至少一个元素,名称等于 firstName。

const list1 = [{ name: 'John' }, { name: 'Marie' }, { name: 'Carl' }, ]
const list2 = [{ firstName: 'John' }, { firstName: 'Peter' }, { firstName: 'Carl' }, ]

let res = list1.filter(({name}) => list2.some(({firstName}) => name==firstName));
console.log(res);


推荐阅读