检查 2 数组的不同条件是否为空

Checking different codnitions for 2 array wheater its empty or not

我有两个数组,分别是 X 和 Y。我需要检查以下条件

if ((!x_array && x_array.length == 0) && (!y_array && y_array.length == 0)) {
    console.log("======BOTH EMPTY======")
    //display something
}
if ((x_array && x_array.length > 0) && (y_array && y_array.length > 0)) {
    console.log("======BOTH NOT EMPTY======")
    // do something
} 
if ((x_array && x_array.length > 0) && (!y_array && y_array.length == 0)) {
    console.log("======ONE IS EMPTY AND OTHER IS NOT======")
    //do something
}

if ((!x_array && x_array.length == 0) && (y_array && y_array.length > 0)) {
    console.log("======ONE IS EMPTY AND OTHER IS NOT======")
    //do something 
} 
else {
     //do something here

}

我检查了 ORAND 但没有任何东西按需要工作。请帮助

为什么不通过一些重构代码来简化!

var isEmp = (input) => !input || input.length == 0;

而这个用作

if ( isEmp ( x_array ) && isEmp( y_array )
{
   console.log( "both empty" );
}
else if ( !isEmp ( x_array ) && !isEmp( y_array )
{
   console.log( "both not empty" );
}
else
{
   console.log( "One of them is empty other is full" );
}

或者更简单

var isXEmpty = isEmp( x_Array );
var isYEmpty = isEmp( y_Array );

var log = isXEmpty ? ( isYEmpty ? "Both Empty" : "Only X Empty" ) : ( isYEmpty ? "Only Y Empty" : "Both not Empty" );

演示

console.log( "1", checkArrays( [], [] )); 
console.log( "2", checkArrays( [1], [1] )); 
console.log( "3", checkArrays( [1], [] )); 
console.log( "4", checkArrays( [], [1] )); 

function checkArrays( x_Array, y_Array ) 
{
  var isEmp = (input) => !input || input.length == 0;

  var isXEmpty = isEmp(x_Array);
  var isYEmpty = isEmp(y_Array);

  return isXEmpty ? (isYEmpty ? "Both Empty" : "Only X Empty") : (isYEmpty ? "Only Y Empty" : "Both not Empty");
}

此代码无效。让我为你指出缺点。

!x_array && x_array.length == 0

如果 x_array 未定义或为空,则此行 永远不会 计算为真,因为 nullundefined 是 "falsy" 类型。因此,false && truefalse && false 永远不会为真。所以,第一个条件不能执行。更好的写法是:

...
if( ( !x_array ) || ( !y_array ) ) {
    console.log( 'Either array is either undefined or null' );
}

然后,您可以使用 length 属性 继续检查值,看看它们是否 已定义 但是 空。

...
if( ( x_array.length === 0 ) || ( y_array.length === 0 ) ) {
    console.log( 'Either array is empty' );
}

您可以应用类似的逻辑来找出代码的下几个条件。

P.S.: 在JavaScript中使用camelCase是一种普遍的风格偏好。并在比较值时尝试使用 === 运算符。 ===可以改写为:

return ( typeof objA == typeof objB ) && ( objA == objB );

因为 == 检查值是否相等而 不检查 类型。

以下为真:'2' == 2

那个!在你的某些条件下是罪魁祸首;

我也合并了你的两个条件以避免重复。

let x_array = ['1'];
let y_array = ['1'];

if ((x_array && x_array.length == 0) && (y_array && y_array.length == 0)) {
    console.log("======BOTH EMPTY======")
    //display something
}
if ((x_array && x_array.length > 0) && (y_array && y_array.length > 0)) {
    console.log("======BOTH NOT EMPTY======")
    // do something
} 
if (((x_array && x_array.length > 0) && (y_array && y_array.length == 0)) || ((x_array && x_array.length == 0) && (y_array && y_array.length > 0))) {
    console.log("======ONE IS EMPTY AND OTHER IS NOT======")
    //do something
}
else {
     //do something here

}