我使用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
返回空数组: - (
一些想法?
答案 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元素进行深度检查。