Логические операторы должны быть ложными, только если оба они являются ненулевыми или непустыми строками - PullRequest
1 голос
/ 21 марта 2020

Я хочу, чтобы логический оператор был истинным, только если выполняются следующие условия:

  1. Либо A, либо B имеют null, либо имеют пустую строку, то есть по крайней мере одно из них будет иметь что-то, то есть !((A === null) || (A === '')) || !((B === null) || (B === ''))
  2. A и B оба равны NULL или имеют пустую строку

По сути, единственный раз, когда я хочу, чтобы условие было ложным, это когда A и B имеют оба -нулевая или непустая строка одновременно.

Ответы [ 4 ]

1 голос
/ 21 марта 2020

Может быть упрощено при назначении одного из нулей или ""

let test = (a = "", b = "") => {
  if(a === null) a = ""
  if(b === null) b = ""
  return !( a != '' && b != '')
}

console.log(test(null, null))
console.log(test('', ''))
console.log(test('a','b'))
console.log(test(null,'b'))
1 голос
/ 21 марта 2020

Просто проверьте значения и объедините условия с помощью логического ИЛИ.

const check = (a, b) => a === null || a === '' || b === null || b === '';

//        the above is the same as this, like the text requests
//        (a === null || a === '') !== (b === null || b === '') ||
//        (a === null || a === '') && (b === null || b === '');
    

console.log([
    [null, null], //  true
    [null, ''],   //  true
    ['', null],   //  true
    ['', ''],     //  true
    [1, 1],       // false
    [null, 1],    //  true
    [1, null]     //  true
].map(a => check(...a)));
1 голос
/ 21 марта 2020

Как насчет этого?

let test = (a,b) => {
  return !(a != null && b != null) || !( a != '' && b != '')
}

console.log(test(null, null))
console.log(test('', ''))
console.log(test('a','b'))
console.log(test(null,'b'))
1 голос
/ 21 марта 2020

Следующее условие будет работать, если A и B равны нулю, неопределены, 0 и '' (пусто).

if (! A ||! B || A === '' || B === '') {}

...