所以我在这里遇到了一些棘手的事情。我有一个 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/