检查 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
}
我检查了 OR
和 AND
但没有任何东西按需要工作。请帮助
为什么不通过一些重构代码来简化!
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
未定义或为空,则此行 永远不会 计算为真,因为 null
和 undefined
是 "falsy" 类型。因此,false && true
和 false && 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
}
我有两个数组,分别是 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
}
我检查了 OR
和 AND
但没有任何东西按需要工作。请帮助
为什么不通过一些重构代码来简化!
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
未定义或为空,则此行 永远不会 计算为真,因为 null
和 undefined
是 "falsy" 类型。因此,false && true
和 false && 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
}