ES6使用Set实现两个对象数组的交集、并集和差集

作者:公子世无双2024.02.17 21:24浏览量:62

简介:在JavaScript ES6中,Set对象提供了一种方便的方法来处理数组的交集、并集和差集。通过Set的API,我们可以快速地获取两个数组的交集、并集和差集。下面是一个使用Set实现这些操作的示例代码。

首先,我们定义两个对象数组:array1和array2。这些数组包含具有不同属性和值的对象。

  1. const array1 = [
  2. { id: 1, name: 'Alice' },
  3. { id: 2, name: 'Bob' },
  4. { id: 3, name: 'Charlie' }
  5. ];
  6. const array2 = [
  7. { id: 2, age: 25 },
  8. { id: 3, age: 30 },
  9. { id: 4, age: 35 }
  10. ];

接下来,我们将使用Set的API来计算两个数组的交集、并集和差集。

交集:要获取两个数组的交集,我们可以使用Set的intersection方法。这个方法会返回一个新的Set对象,其中包含存在于两个Set对象中的唯一值。

  1. const intersection = new Set([...array1].filter(item => array2.some(otherItem => isEqual(item, otherItem))));
  2. console.log(intersection);

这里,我们使用了扩展运算符(...)来将array1转换为Set对象,然后使用filter方法来过滤出存在于array2中的对象。最后,我们使用some方法来检查每个对象是否存在于array2中。

并集:要获取两个数组的并集,我们可以使用Set的union方法。这个方法会返回一个新的Set对象,其中包含存在于两个Set对象中的唯一值。

  1. const union = new Set([...array1, ...array2]);
  2. console.log(union);

这里,我们使用了扩展运算符(...)来将两个数组转换为Set对象,并将它们合并到一个新的Set对象中。

差集:要获取两个数组的差集,我们可以使用Set的difference方法。这个方法会返回一个新的Set对象,其中包含存在于第一个Set对象中但不存在于第二个Set对象中的唯一值。

  1. const difference = new Set([...array1].filter(item => !array2.some(otherItem => isEqual(item, otherItem))));
  2. console.log(difference);

这里,我们使用了扩展运算符(...)来将array1转换为Set对象,然后使用filter方法来过滤出不存在于array2中的对象。最后,我们使用some方法来检查每个对象是否存在于array2中。如果一个对象不存在于array2中,它就会被添加到新的Set对象中。
```javascript