lodash intersectionBy通过迭代器取数组交集

intersection方法可以对元素是数字数组字符串数组进行取交集,而lodash intersectionBy方法可以通过迭代器取数组交集功能跟强大。

intersectionBy方法

var res=_.intersectionBy(arr1,arr2,arr3, [迭代器]);
参数
数组: 待处理的数组。
迭代器: (Array|Function|Object|string): iteratee(迭代器)。
返回值
res: 返回第一个数组与其他数组有交集的元素。

intersectionBy例子

//例子1:取交集
 var res=_.intersectionBy([2, 5.3], [2, 9]);
// res等于 [2]
 
//例子2:自定义函数取交集
var res=_.intersectionBy([2.2, 5.3], [2.6, 9], function(a){  
     //取每个元素的整数
   return Math.floor(a);
});
// res等于 [2.2]

//例子3:自定义函数取交集 
var res=_.intersectionBy([{"id":1},{"id":2}], [{"id":1}], function(a){  
     //取每个元素的整数
   return a.id==1;
});
// res等于 [{"id":1}]

//例子4:通过属性取交集 
var res=_.intersectionBy([{"id":1},{"id":2}], [{"id":1}], "id");
// res等于 [{"id":1}]

//例子5:通过path取交集 
var arr1=[{"id":{"name":1},"title":{"key":1}},{"id":{"name":2},"title":{"key":2}}];
var arr2= [{"id":{"name":1},"title":{"key":2}}];
var res=_.intersectionBy(arr1,arr2, "title.key");
// res等于 [{"id":{"name":2},"title":{"key":2}}]

在线试一试