_.intersectionBy

栏目: Javascript 发布时间:2024-12-27

_.intersectionBy 是 Lodash 库中的一个函数,用于比较两个或多个数组,并返回一个新数组,这个新数组包含了所有数组中共同存在的元素,但判断元素是否相同的依据是一个指定的迭代函数(iteratee)的结果,而不是元素本身的严格相等。

函数签名

_.intersectionBy(arrays, [iteratee=_.identity])
  • arrays (Array[]): 要检查的数组列表。
  • [iteratee=_.identity] (Function): 每次迭代调用的函数。

使用示例

假设我们有两个数组,每个数组包含了一些对象的数组,我们希望找到这些对象中某个属性值相同的元素。

const array1 = [
  { 'x': 1 },
  { 'x': 2 }
];

const array2 = [
  { 'x': 2 },
  { 'x': 3 }
];

const result = _.intersectionBy(array1, array2, 'x');
// 或者使用函数作为 iteratee: _.intersectionBy(array1, array2, obj => obj.x);

console.log(result);
// => [{ 'x': 2 }]

在这个例子中,我们使用 _.intersectionBy 函数,并指定 iteratee 为对象属性 'x' 的键名(或者一个返回对象 'x' 属性的函数)。结果数组包含了在两个原始数组中 'x' 属性值都为 2 的对象。

注意事项

  • 如果不提供 iteratee,则默认使用 _.identity,这意味着数组元素将基于其严格相等性(===)进行比较。
  • _.intersectionBy_.intersection 的区别在于 _.intersection 直接比较元素本身,而 _.intersectionBy 则通过迭代函数的结果来判断元素是否相同。
  • _.intersectionBy 至少需要两个数组作为输入。

本文地址:https://www.tides.cn/p_js-lodash-intersectionBy