【问题标题】:How to find out if all variables are true or all are false?如何找出所有变量是否为真或全部为假?
【发布时间】:2018-12-28 19:07:15
【问题描述】:

如何检查所有变量是真还是假?

var a = true;
var b = false;
var c = false;

if (a == b == c) {
  console.log('All variables have same boolean value.');
}

【问题讨论】:

  • a == b && b == c.
  • @trincot 如果我有 20 个变量怎么办?
  • 那你有一股代码味道
  • [a,b,c,d,e,f,g,h,i,j].every(z => z == a)

标签: javascript boolean


【解决方案1】:

您可以将所有变量收集在一个数组中,并使用Array#every 进行检查,然后取出第一个元素进行检查。

const isEqual = (v, _, [w]) => v === w;

console.log([true, true, true].every(isEqual));    //  true
console.log([false, false, false].every(isEqual)); //  true
console.log([true, false, true].every(isEqual));   // false

【讨论】:

  • 不错,比我的更简洁。
【解决方案2】:

let a = true;
let b = false;
let c = true;
let d = false;

const allTrue = arr => arr.every(e => e);
const allFalse = arr => arr.every(e => !e);
const allTrueOrFalse = arr => allTrue(arr) || allFalse(arr);

const trues = [a, c];
const falses = [b, d];
const mixed = [a, b, c, d];


console.log(allTrueOrFalse(trues));
console.log(allTrueOrFalse(falses));
console.log(allTrueOrFalse(mixed));

【讨论】:

    【解决方案3】:

    a == b && b == c给你的例子就足够了

    您可以像这样使用every 来做到这一点

    这里的想法是使用every将所有值与数组的第一个元素进行比较。

    var a = true;
    var b = false;
    var c = false;
    
    let arr = [a,b,c,false,undefined];
    let arr2 = [true,true]
    
    console.log(arr.every( e => e === arr[0] ))
    
    console.log(arr2.every( e => e === arr2[0]))
    
    console.log([a,b,c,false,undefined].every((e,i,arr)=>e===arr[0])) 

    如果要使用很多时间,请将其更改为这样的功能

    let arr = [false,undefined];
    let arr2 = [true,true]
    
    function test (input){
      let check = (e,i,a) => e === a[0];
      return input.every(check);
    }
    
    console.log( test(arr) )
    
    console.log( test(arr2) )

    【讨论】:

    • 这里,你需要一直知道回调中的数组,这样就无法再次使用回调了。
    • @NinaScholz 我同意你的观点。但这只是实践中的一个例子,如果经常使用它,将其更改为函数总是更好的方法。
    【解决方案4】:

    如果所有值都为真,则返回真,否则返回假。希望它是你想要的

        var a = true;
        var b = false;
        var c = false;
        
        console.log([a,b,c].every( (val, i, arr) => val === arr[0] ));

    【讨论】:

      【解决方案5】:

      if(x) 如果我们有一个非空字符串、1 和其他可能的值,将返回 true...来自 Mozilla here 的参考。所以我们不能只使用if(value) 专门检查 truefalse booleans..

      如果有 20 个变量,则改为 put them in an array(使用 Array.from... 运算符)

      最可靠的方法是检查数组中的.every() 值是否等于特定值。这将自动检查每个值是否彼此相等,以及特定值。

      var truthy = true, falsy = false;
      let arr1 = [truthy , truthy , truthy , falsy, falsy]; // Assigns variables into your array
      let arr2 = [true, true, true];
      let arr3 = [false, false, false];
      let arr4 = [false, false, false, 0, undefined];
      
      const checkAllTrue = (arr) => {
        return arr.every((val) => val === true);
       }
       
      const checkAllFalse = (arr) => {
        return arr.every((val) => val === false);
       }
        
      console.log(checkAllTrue(arr1));
      console.log(checkAllTrue(arr2));
      console.log(checkAllFalse(arr3));
      console.log(checkAllFalse(arr4));

      【讨论】:

        【解决方案6】:

        在计算机编程中,有一个术语叫做短路运算符或逻辑运算符,用于检查两个运算是否满足特定要求,而不是编写一堆条件(例如if..else if..else)。短路运算符或逻辑运算符表示为 && ( and ) 或 || ( or )。在某些语言中,它表示为andANDorOR

        && (and) 顾名思义,确保在执行与该检查相关的特定操作之前,其两个操作数都计算为真

        例如

        1.true && true 评估为真
        2. true && false 评估为假(因为右手操作数不为真)

        var a = true;
        var b = false;
        var c = false;
        
        if (a && b && c) {
            console.log('All variables have same boolean value.');
        }
        

        &&||之所以叫短路是为了避免下面的情况

         if ( a ) {
        
            if ( b ) {
                 if ( c ) {
                    coonsole.log('All variables have same boolean value.');         
                 }
            }
         }
        

        【讨论】:

          【解决方案7】:

          可以检查这里的第一个变量(或任何变量)以了解是否全部为真或全部为假。如果第一个变量为真,则检查是否全部为真,如果第一个变量为假,则检查是否全部为假。

          全部为真,and of all variables 也为真,否则为假。

          对于所有假的情况,我们可以or all variables,如果结果是真的那么显然所有的都不假。

          不管你有多少变量,你都可以按照这个方法。

          if(a) {
            x=a&b&c;
            if(x) 
                console.log("all true");
            else 
                console.log("neither");
          }
          else {
              x=a|b|c;
              if(x) 
                  console.log("niether");
              else
                  console.log("all false");
          }
          

          【讨论】:

            【解决方案8】:

            您必须验证是否:a == b && b == c && a == c

            【讨论】:

            • a == c 是不必要的。推论是真的
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-02-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-12-04
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多