Как узнать, все ли переменные истинны или ложны? - PullRequest
0 голосов
/ 28 декабря 2018

Как проверить, все ли переменные истинны или ложны?

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

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

Ответы [ 8 ]

0 голосов
/ 28 декабря 2018

Первая переменная здесь (или любая переменная) может быть проверена, чтобы узнать, все ли истины или все ложные.Если первая переменная истинна, то проверьте, все ли истина, а первая - ложь, а затем проверьте, все ли ложны.

Для всех истинных 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");
}
0 голосов
/ 28 декабря 2018

if(x) вернул бы true, если бы у нас была непустая строка, 1 и другие возможные значения ... Ссылка из Mozilla здесь .Поэтому мы не можем просто использовать if(value), чтобы специально проверить true или false booleans ..

Если имеется 20 переменных, вместо этого поместите их в массив (используйте оператор 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));
0 голосов
/ 28 декабря 2018

В компьютерном программировании есть термин, называемый операторы короткого замыкания или логические операторы, которые используются для проверки того, удовлетворяют ли две операции определенному требованию, вместо записи группы условий (например, if..else if..else).Операторы короткого замыкания или логические операторы представлены как && (and) или || (or).На некоторых языках это представляется как and AND or OR.

&& (and) так же, как звучит имя, гарантирует, что оба его операнда обнуляются до истины перед выполнением конкретной операции, связанной, например, с проверкой

:

1. true && true оценивается как true
2. true && false оценивается как 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.');         
         }
    }
 }
0 голосов
/ 28 декабря 2018

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));
0 голосов
/ 28 декабря 2018

Вы можете собрать все переменные в массиве и проверить с помощью 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
0 голосов
/ 28 декабря 2018

Если все значения равны true, это вернет true, а если нет - false.Надеюсь, что вы хотите

    var a = true;
    var b = false;
    var c = false;
    
    console.log([a,b,c].every( (val, i, arr) => val === arr[0] ));
0 голосов
/ 28 декабря 2018

Вы должны подтвердить, если: a == b && b == c && a == c

0 голосов
/ 28 декабря 2018

a == b && b == c Этого будет достаточно для приведенного вами примера

Вы можете сделать это с каждые вот так

Здесь идея состоит в том, чтобысравнить все значения с первым элементом массива, используя 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) )
...