在javascript中检查单个if语句中的多个OR条件的更好方法

335*_*307 0 javascript

是否有可能进一步简化以下javascript声明.要求是如果任何输入是否定的,它应该在块内执行语句.我想知道我是否可以< 0多次避免使用一次

    if (Number(cash.value) < 0 || Number(cheque.value) < 0 || Number(charge.value) < 0 || Number(card.value) < 0) {
doSomething();
}
Run Code Online (Sandbox Code Playgroud)

我简化了这个逻辑

if ((Number(Cash.value) || Number(Cheque.value) || Number(Charge.value) || Number(Card.value)) < 0)
Run Code Online (Sandbox Code Playgroud)

但它不起作用,不符合要求.上述逻辑有效,但存在重复的<0逻辑

Sur*_*yan 6

你可以尝试这样做

var numbers = [Cash.value, Cheque.value, Charge.value, Card.value];

if(numbers.some(value => Number(value) < 0)){
   doSomething();
}
Run Code Online (Sandbox Code Playgroud)

例如,在ES6中工作

var numbers = [11, 12, -1,-7];

if(numbers.some(value => value < 0)){
   console.log('Found !!!');
}
Run Code Online (Sandbox Code Playgroud)

对于IE 9,您可以编写一个函数并使用

function anyNegative(numbers){
  for(var i = 0; i < numbers.length; i++){
     if(numbers[i] < 0){
        return true;
     }
  }
  
  return false;
}

var numbers = [11, 12, -1,-7];

if(anyNegative(numbers)){
     console.log('Found !!!');
}
Run Code Online (Sandbox Code Playgroud)