📅  最后修改于: 2023-12-03 15:01:48.978000             🧑  作者: Mango
当我们需要比较两个对象数组时,我们需要找到它们之间的相同元素。以下是一些方法来解决这个问题。
const arr1 = [{a: 1}, {b: 2}, {c: 3}];
const arr2 = [{a: 1}, {d: 4}];
const result = arr1.filter(item => arr2.includes(item));
console.log(result); // [{a: 1}]
该方法使用了JavaScript中的filter
和includes
函数。首先使用filter
函数遍历第一个数组,然后使用includes
函数来检查第二个数组中是否包含该元素。
const arr1 = [{a: 1}, {b: 2}, {c: 3}];
const arr2 = [{a: 1}, {d: 4}];
const result = arr1.reduce((acc, item) => {
if (arr2.find(i => JSON.stringify(i) === JSON.stringify(item))) {
acc.push(item);
}
return acc;
}, []);
console.log(result); // [{a: 1}]
该方法使用了JavaScript中的reduce
和find
函数。首先使用reduce
函数遍历第一个数组,然后使用find
函数来检查第二个数组中是否包含该元素,并使用JSON.stringify
来比较两个对象。
const _ = require('lodash');
const arr1 = [{a: 1}, {b: 2}, {c: 3}];
const arr2 = [{a: 1}, {d: 4}];
const result = _.intersectionWith(arr1, arr2, _.isEqual);
console.log(result); // [{a: 1}]
该方法使用了lodash库的intersectionWith
函数。该函数可以比较两个数组中的对象,并返回它们的交集。
以上是几种比较两个对象数组得到相同元素的方法,每种方法都有各自的优点和适用场景。