📌  相关文章
📜  javascript比较两个对象数组得到相同的元素 - Javascript(1)

📅  最后修改于: 2023-12-03 15:01:48.978000             🧑  作者: Mango

Javascript比较两个对象数组得到相同的元素

当我们需要比较两个对象数组时,我们需要找到它们之间的相同元素。以下是一些方法来解决这个问题。

方法1:使用filter和includes函数
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中的filterincludes函数。首先使用filter函数遍历第一个数组,然后使用includes函数来检查第二个数组中是否包含该元素。

方法2:使用reduce函数
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中的reducefind函数。首先使用reduce函数遍历第一个数组,然后使用find函数来检查第二个数组中是否包含该元素,并使用JSON.stringify来比较两个对象。

方法3:使用lodash库
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函数。该函数可以比较两个数组中的对象,并返回它们的交集。

以上是几种比较两个对象数组得到相同元素的方法,每种方法都有各自的优点和适用场景。