javascript - 如何使用 Lo-dash 在 _.filter 的回调函数中迭代数组

标签 javascript arrays json angularjs lodash

所以我在这里遇到了一些棘手的事情。我有一个 JSON 对象,需要根据用户查询进行过滤。在此 JSON 中,我想过滤掉作为食物数组的 category_of_foods 字段。

早餐项目=

[
{
    "id": 338,
    "created_at": "2014-10-08T03:32:49.000Z",
    "user_id": 91,
    "type_of_meal": "breakfast",
    "category_of_foods": [
        "cheese burger",
        "fruit"
    ]
},
{
    "id": 339,
    "created_at": "2014-10-08T03:34:43.000Z",
    "user_id": 91,
    "type_of_meal": "breakfast",
    "category_of_foods": [
        "chicken burger",
        "fruit"
    ]
}
]

使用Lo-Dash library ,当 category_of_foods 字段只是一个字符串而不是一个数组时,我能够使我的代码工作。我现在有以下代码,但不返回匹配项:

$scope.showPicturesBreakfast = function(type, term){ // term = "fruit"
    function filterBreakfast(category, list){
        return _.filter(list, function(element){
            return _(element.category_of_foods).forEach( function(entry){
                return entry === category; // returns true twice if term is fruit
            });
        });
    }
    $scope.breakfastPictures = filterBreakfast(term, breakfastItems);
};

该代码对我来说似乎很合乎逻辑,因为它与之前类似,但现在我还在迭代数组以查找真正的匹配项以返回到 _.filter 函数。难道我做错了什么?

最佳答案

您必须向调用者返回一个真值或假值,在本例中为filter。尝试使用 some 代替,它返回一个 bool 值:

return _(element.category_of_foods).some(function(entry){
    return entry === category;

如果至少有一个条目匹配,它将返回true

关于javascript - 如何使用 Lo-dash 在 _.filter 的回调函数中迭代数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26291936/

相关文章:

javascript - 使用 jQuery getJSON 解释/解析 JSON 数据

php - 使用 php 循环从 mysql 数据数组动态生成 json 文件

javascript - 在地平线上下文中设置 height() 会拉伸(stretch)图形,同时保留覆盖图缩放比例

javascript - Vue.js 在组件之间传递数据

javascript - 如何在没有滚动条的情况下滚动 Div?

C++问题初始化一个对象两次

java - 我有一个在 "some"客户端计算机上有问题的第 3 方数字签名 Java 小程序,我知道如何验证版本但是。

java - 如何避免 ArrayIndexOutOfBounds?

java - 使用arraylist而不是array

ios - 如何使用 Alamofire 从 JSON 中提取数据