我在使用 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
返回空数组:-(
一些想法?
最佳答案
_.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);
引用文档:
This method supports comparing arrays, booleans, Date objects, numbers, Object objects, regexes, and strings. Objects are compared by their own, not inherited, enumerable properties.
请注意,使用下划线时这不起作用,因为这不会对数组元素进行深度检查。
关于javascript - lodash _.filter 返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34107699/