javascript - lodash _.filter 返回空数组

标签 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 返回空数组:-(

一些想法?

最佳答案

_.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.

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

参见a working example

关于javascript - lodash _.filter 返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34107699/

相关文章:

javascript - jquery .html() 未获取最新选定值

javascript - 当第一个选项卡处于事件状态时,第二个选项卡不起作用

Javascript/Lodash - 从数组中删除一个项目(具有相同的 ID)

javascript - 未捕获的语法错误 : Unexpected token ILLEGAL textarea rendering

javascript - 使用node.js在2个目录之间匹配和写入数据

javascript - 多部分表单 - 试图阻止默认的 a href 行为

javascript - 在angularjs中的DHtmlX调度程序上添加时间线事件

对使用 $http 的 Controller 进行单元测试

typescript - 找不到模块 "lodash,"但它可以工作

javascript - 将对象与嵌套对象数组进行比较(不考虑顺序)