Javascript 在简单函数或条件中组合4个布尔值

Javascript 在简单函数或条件中组合4个布尔值,javascript,if-statement,conditional-statements,Javascript,If Statement,Conditional Statements,我有4个布尔值 next_is_left next_is_right next_is_above next_is_below 首先,我想检查它们是否都是真的。然后我想检查其中是否有一个是false。然后,如果其中两个为false,那么三个,或者如果全部为false 我想知道如何在一个简单的if条件/函数中解决这个问题。谢谢 switch(next_is_left + next_is_right + next_is_above + next_is_below){ case 0:

我有4个布尔值

next_is_left
next_is_right
next_is_above
next_is_below
首先,我想检查它们是否都是真的。然后我想检查其中是否有一个
false
。然后,如果其中两个
false
,那么三个,或者如果全部
false

我想知道如何在一个简单的if条件/函数中解决这个问题。谢谢

 switch(next_is_left + next_is_right + next_is_above + next_is_below){
   case 0:
     console.log("all false");
     break;
   case 1:
     console.log("one true");
     break;
   case 2:
     console.log("two true");
     break;
   case 3:
     console.log("one false");
     break;
   case 0:
     console.log("all true");
     break;

 }
把布尔数加起来就行了


只需将布尔值相加。

计算真值的数量并使用switch case处理结果如何

let next_is_left=false;
让next_is_right=真;
设next_为_over=真;
设next_为_below=false;
开关(getNumTrue(下一个为左,下一个为右,下一个为上,下一个为下)){
案例0:
log(`All false`);
打破
案例1:
log(`1 true,3 false`);
打破
案例2:
log(`2 true,2 false`);
打破
案例3:
log(`3 true,1 false`);
打破
案例4:
log(`All true`);
打破
}    
函数getNumTrue(){
让我,努姆图;
numTrue=0;
对于(i=arguments.length-1;i>-1;i--){
numTrue+=参数[i]?1:0;
}
返回numTrue;

}
计算真值的数量并使用switch case处理结果怎么样

let next_is_left=false;
让next_is_right=真;
设next_为_over=真;
设next_为_below=false;
开关(getNumTrue(下一个为左,下一个为右,下一个为上,下一个为下)){
案例0:
log(`All false`);
打破
案例1:
log(`1 true,3 false`);
打破
案例2:
log(`2 true,2 false`);
打破
案例3:
log(`3 true,1 false`);
打破
案例4:
log(`All true`);
打破
}    
函数getNumTrue(){
让我,努姆图;
numTrue=0;
对于(i=arguments.length-1;i>-1;i--){
numTrue+=参数[i]?1:0;
}
返回numTrue;

}
您可以对数组使用
每个
方法来检查它们是否都是真的,并过滤以查看有多少个

var next_is_left = true;
var next_is_right = true;
var next_is_above = true;
var next_is_below = true;

var sides = [
  next_is_left,
  next_is_right,
  next_is_above,
  next_is_below,
];

sides.every(n => n === true); // checks if all true
sides.every(n => n === false); // checks if all false
sides.filter(n => n === false).length; // returns number of false variables

您可以对数组使用
every
方法来检查它们是否都是真的,并进行筛选以查看有多少个

var next_is_left = true;
var next_is_right = true;
var next_is_above = true;
var next_is_below = true;

var sides = [
  next_is_left,
  next_is_right,
  next_is_above,
  next_is_below,
];

sides.every(n => n === true); // checks if all true
sides.every(n => n === false); // checks if all false
sides.filter(n => n === false).length; // returns number of false variables

使用数组来完成这项工作

var booleans = [
  next_is_left
  next_is_right
  next_is_above
  next_is_below
];

var holdsTrue = function(arg) { return arg; };
var holdsFalse = function(arg) { return !arg; };


var theyAreAllTrue = booleans.filter(holdsTrue).length === booleans.length;
var oneOfThemIsFalse = booleans.filter(holdsFalse).length > 0;
var twoOfThemIsFalse = booleans.filter(holdsFalse).length > 1;
var threeOfThemIsFalse = booleans.filter(holdsFalse).length > 2;
var theyAreAllFalse = booleans.filter(holdsFalse).length === booleans.length;
同样,对于lodash,你有每一个,一些,否定,身份和大小

var theyAreAllTrue = every(booleans, identity)
var theyAreAllFalse = every(booleans, negate(identity));
var numberOfFalseOnes = size(filter(booleans, negate(identity)))
var numberOfTrueOnes = size(filter(booleans, identity))

var oneOfThemIsTrue = some(booleans, identity)
var oneOfThemIsFalse = some(booleans, negate(identity))

使用数组来完成这项工作

var booleans = [
  next_is_left
  next_is_right
  next_is_above
  next_is_below
];

var holdsTrue = function(arg) { return arg; };
var holdsFalse = function(arg) { return !arg; };


var theyAreAllTrue = booleans.filter(holdsTrue).length === booleans.length;
var oneOfThemIsFalse = booleans.filter(holdsFalse).length > 0;
var twoOfThemIsFalse = booleans.filter(holdsFalse).length > 1;
var threeOfThemIsFalse = booleans.filter(holdsFalse).length > 2;
var theyAreAllFalse = booleans.filter(holdsFalse).length === booleans.length;
同样,对于lodash,你有每一个,一些,否定,身份和大小

var theyAreAllTrue = every(booleans, identity)
var theyAreAllFalse = every(booleans, negate(identity));
var numberOfFalseOnes = size(filter(booleans, negate(identity)))
var numberOfTrueOnes = size(filter(booleans, identity))

var oneOfThemIsTrue = some(booleans, identity)
var oneOfThemIsFalse = some(booleans, negate(identity))

[下一行是左,下一行是右,下一行是上,下一行是下].filter(布尔)。length
我该如何理解这一行?该表达式将给出
true
值的数量。如果它们都为真,则结果为4,如果它们都为假,则结果为0,等等@DavidMihal nope,filter不会这样做,filter会返回一个数组,因此如果您执行filter(true),它将返回一个包含真值的数组,通过执行array.length,您将获得真值的计数
[下一个在左,下一个在右,下一个在上,下一个在下]。过滤器(布尔).length
我该如何理解这一行?该表达式将给出
true
值的数目。如果它们都为true,则结果为4,如果它们都为false,则结果为0,依此类推@DavidMihal nope,filter不执行此操作,filter返回数组,因此如果执行filter(true)它将返回一个包含真值的数组,通过执行array.length,您将获得真值的计数