lodash _.filter返回空数组

时间:2015-12-05 16:15:28

标签: javascript angularjs lodash

我使用lodash _.filter停留在Angular.js中。

$scope.test = [
    { name: 'FirstName', items: ["Phone", "Tablet"] },
    { name: 'FirstName', items: ["TV"] },
];
$scope.items = [
    { item: "Phone" },
    { item: "Tablet" }
]
$scope.fined = [];
$scope.fined = _.filter(test, _.matches(items));
console.log(fined)// result []

我期待:

$scope.fined= [{name:'FirstName',items:["Phone","Tablet"]}];

我不知道为什么但_.filter返回空数组: - (

一些想法?

1 个答案:

答案 0 :(得分:1)

_.matches的工作方式是传递一个对象,然后在返回的谓词函数中检查其键值对。所以你的情况应该是这样的:

var test = [
    { name: 'FirstName', items: ["Phone", "Tablet"] },
    { name: 'FirstName', items: ["TV"] },
];
var items = { items:  ["Phone", "Tablet"] };

var fined = _.filter(test, _.matches(items));
console.log(fined);

引用文档:

  

此方法支持比较数组,布尔值,Date对象,数字,Object对象,regex和字符串。对象通过它们自己的,而不是继承的,可枚举的属性进行比较。

请注意,使用下划线时会起作用,因为这不会对Array元素进行深度检查。

请参阅a working example