Javascript压缩if语句

时间:2014-12-01 21:38:20

标签: javascript

我在javascript中有一个if语句

if(prop < 0 || trans < 0 || queue < 0 || proc < 0 
    || prop > 1 || trans > 1 || queue > 1 || proc > 1 
    || prop == "" || trans == "" || queue == "" || proc == ""){

有没有办法压缩这个?适用于proptransqueueproc。我想创建一个if语句,如果值不在0到1之间,或者它有一个空字符串值

3 个答案:

答案 0 :(得分:4)

var checkThese = [prop, trans, queue, proc];
var result = checkTruthinessOf(checkThese);

function checkTruthinessOf(things) {
    var returnValue = false;
    [].forEach.call(things, function(thing){
       if (thing < 0 || thing > 1 || thing == "") returnValue = true;
    });
    return returnValue;
};

答案 1 :(得分:4)

建立Jordan's answer

var checkThese = [prop, trans, queue, proc];
var result = checkTruthinessOf(checkThese);

function checkTruthinessOf(things) {
    return things.every(function(el) {
       return (el < 0 || el > 1 || el === "");
    });
}

请参阅Array.prototype.every()

答案 2 :(得分:1)

我从jQuery中学习了这个练习。它消除了额外的数组,只需传入尽可能多的参数。然后使用rink函数立即验证所有内容。

var result = checkTruthinessOf(prop, trans, queue, proc);

function checkTruthinessOf(/*unlimited arguments*/) {
   return Array.prototype.every.call(arguments, function(thing) {
       return (thing < 0 || thing > 1 || thing === "");
    });
}