我使用underscore.js来过滤JSON数组。我找不到在_.where方法中组合多个子句的方法。 (ps:我过滤了一个字符串属性)
有可能吗?
答案 0 :(得分:4)
正如您对问题的评论中所述,看起来您正在尝试filter
使用OR
操作的数组 - 这是使用_.where
无法实现的。
改为使用_.filter
:
var arr = [{ x:1, y:2 }, { x:2, y:1 }, { x:3, y:3 }];
var result = _.filter(arr, function(obj) {
// return true for every valid entry!
return obj.x == 1 || obj.y == 1;
});
console.log(result); // [{ x:1, y:2 },{ x:2, y:1 }]
的 Fiddle 强>
答案 1 :(得分:1)
目前还不清楚,究竟要做什么。但这是你想要做的功能版本。您可以在functionsArray
中定义任意数量的函数,它们将接受单个单词。
var words = ["school", "cry", "google", "fly"];
function has(chr) {
return function(word) {
return _.contains(word, chr);
};
};
var functionsArray = [has("o"), has("f")];
console.log(_.filter(words, function(word) {
return _.some(functionsArray, function(currentFunction) {
return currentFunction(word);
});
}));
<强>输出强>
[ 'school', 'google', 'fly' ]