这个问题具体针对lodash https://lodash.com/docs.
给定两个对象数组,什么是best way用另一个数组的对象过滤一个数组?我试图提出下面的一个场景,我这样做的方法是使用两个.forEach
循环,但我想知道使用 lodash 是否有更好的方法来进行这种类型的过滤。
Example
The main source array of objects is
users
.
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'joe', 'age': 40, 'active': false },
{ 'user': 'fred', 'age': 50, 'active': false },
{ 'user': 'fred', 'age': 60, 'active': false },
{ 'user': 'fred', 'age': 70, 'active': false },
{ 'user': 'fred', 'age': 22, 'active': false },
{ 'user': 'fred', 'age': 25, 'active': false },
{ 'user': 'barney', 'age': 40, 'active': false },
{ 'user': 'pebbles', 'age': 1, 'active': true }
];
将过滤的对象数组users
数组被称为others
.
var others = [
{ 'user': 'fred', 'age': 60 },
{ 'user': 'fred', 'age': 70},
{ 'user': 'fred', 'age': 22}
];
期望的结果基于others
过滤users
is:
[
{ 'user': 'fred', 'age': 60, 'active': false },
{ 'user': 'fred', 'age': 70, 'active': false },
{ 'user': 'fred', 'age': 22, 'active': false }
];
这是获得所需结果的一种方法。
var result = [];
_.forEach(users, function (n, key) {
_.forEach(others, function (n2, key2) {
if (n.user === n2.user && n.age === n2.age) {
result.push(n);
}
});
});
console.log(result);
这是 jsbin 上的示例。
http://jsbin.com/hapariviya/1/edit?html,js,控制台,输出 http://jsbin.com/hapariviya/1/edit?html,js,console,output