指定多个子句underscore.js

时间:2014-01-06 16:15:46

标签: javascript underscore.js

我使用underscore.js来过滤JSON数组。我找不到在_.where方法中组合多个子句的方法。 (ps:我过滤了一个字符串属性)

有可能吗?

2 个答案:

答案 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' ]