Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查2个数组的不同密码是否为空_Javascript_Arrays_Nested If - Fatal编程技术网

Javascript 检查2个数组的不同密码是否为空

Javascript 检查2个数组的不同密码是否为空,javascript,arrays,nested-if,Javascript,Arrays,Nested If,我有两个数组,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) && (

我有两个数组,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

}

我用
进行了检查,但没有按需要工作。请帮助

为什么不使用一些重构代码来简化呢

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”,检查数组([],[]);
log(“2”,检查数组([1],[1]);
log(“3”,检查数组([1],]);
log(“4”,检查数组([],[1]);
函数检查数组(x_数组、y_数组)
{
变量isEmp=(输入)=>!输入| |输入.length==0;
var isXEmpty=isEmp(x_数组);
var isYEmpty=isEmp(y_数组);
return isXEmpty?(isYEmpty?“均为空”:“仅X为空”):(isYEmpty?“仅Y为空”:“均为非空”);

}
此代码无法工作。让我为你指出缺点

!x_array && x_array.length == 0
如果
x_数组
未定义或为空,因为
null
未定义
都是“falsy”类型,则此行可以从不计算为真。因此,
false&&true
false&&false
从来都不是真的。因此,第一个条件无法执行。写这篇文章的更好方法是:

...
if( ( !x_array ) || ( !y_array ) ) {
    console.log( 'Either array is either undefined or null' );
}
然后,您可以继续使用
length
属性检查值,以查看它们是否定义为但为空

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

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

return ( typeof objA == typeof objB ) && ( objA == objB );
因为
=
仅检查值是否相等,而不检查类型


以下是正确的:
'2'==2

!在某些情况下,你是罪魁祸首

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

让x_数组=['1'];
设y_数组=['1'];
if((x_数组和&x_数组.length==0)和&(y_数组和&y_数组.length==0)){
console.log(“=======均为空=====”)
//展示
}
if((x_数组和&x_数组.length>0)和(y_数组和&y_数组.length>0)){
console.log(“=======两者均不为空=====”)
//做点什么
} 
if(((x_数组和x_数组.length>0)和((y_数组和y_数组.length==0))和((x_数组和x_数组.length==0)和((y_数组和y_数组.length>0))){
console.log(“=======一个为空,另一个不为空”)
//做点什么
}
否则{
//在这里做点什么

}
Btw,哪个测试用例不工作?@gurvinder372,从外观上看,我会选择第一个永远不会执行的测试用例。@ekta我看到你对我的代码进行了编辑,以验证“未定义”的场景;你想把它也处理好吗?因为在你的问题陈述中,我只看到空或不空。@gurvinder372测试用例是,如果我检查其中一个数组是否为空,我将面临问题。如果两个数组均不为空,则其工作方式与您的答案一致,但如果任何一个数组均为空,则出现issue@ekta你试过我的答案了吗?谢谢你的解释:)。我试过你的方法。我所面临的问题是,如果(x|u array | x|u array.length>0){}它的未定义长度这些条件仅作为示例给出。如果你想要一个完整的例子,我很乐意为你写一个小片段。另外,为任意一个数组编写的条件为null时,如果((x_数组和x_数组.length>0)和((y_数组和y_数组.length==0))|((x_数组和x_数组.length==0)和((y_数组和y_数组.length>0)){@ekta,我已经给你写了一个例子。请看这里@ekta,然后请接受这个答案,我们可以结束这个问题。不过,每个子案例中的奇偶校验都是多余的。@weirdpanda请详细说明
x\u数组&…
以及
y\u数组&&
可以减少为单个返回基检查,如
if(!x_数组| | |!y_数组).
return ( typeof objA == typeof objB ) && ( objA == objB );