Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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 逻辑与赋值_Javascript - Fatal编程技术网

Javascript 逻辑与赋值

Javascript 逻辑与赋值,javascript,Javascript,我想在var a和var b之间进行逻辑AND运算,并将结果分配给var a 我知道如何使用按位AND:a&=b 但是,我希望true或false(即逻辑而不是按位)而不是结果为1或0。我可以用javascript做这个吗 var boolArr1=[true,true,true]; var boolArr2=[true,true,false]; var res1=真; var res2=真; boolar1.forEach(i=>res1&=i); forEach(i=>res2&=i);

我想在
var a
var b
之间进行逻辑AND运算,并将结果分配给
var a

我知道如何使用按位AND:
a&=b
但是,我希望
true
false
(即逻辑而不是按位)而不是结果为
1
0
。我可以用javascript做这个吗

var boolArr1=[true,true,true];
var boolArr2=[true,true,false];
var res1=真;
var res2=真;
boolar1.forEach(i=>res1&=i);
forEach(i=>res2&=i);
文件。写入(“res1=“+res1”)//应该写为true而不是1
文件。写(“
”);
文件。写入(“res2=“+res2”)//应该写入false而不是0
没有等效的单个(组合)运算符执行
a=a和&b

您可以稍微修改代码以实现所需的功能,但实际上它只是将其隐藏在函数调用和结果后面:

var boolArr1=[true,true,true,null,true];
var boolArr2=[true,true,false];
var res1=boolArr1.reduce((上一个,当前)=>上一个和当前,true);
var res2=boolArr2.reduce((上一个,当前)=>上一个和当前,真);
document.write(“res1=”+res1);//写对了
文件。写(“
”); document.write(“res2=”+res2);//写入错误
var boolArr1=[true,true,true];
var boolArr2=[true,true,false];
var res1=真;
var res2=真;
boolar1.forEach(i=>res1&=i);
forEach(i=>res2&=i);
document.write(“res1=“+Boolean(res1))//应该写为true而不是1
文件。写(“
”);
document.write(“res2=“+Boolean(res2))//应该写入false而不是0
&=
的结果是一个整数,它是每位二进制
运算的结果

您根本无法对布尔值使用
&=
操作

检查以下各项:

var a = 1; //  001b
var b = 2; //  010b
a &= b;    //  001b & 010b = 0
console.log(a); // 0
您必须始终使用
a=a&&b如果你是指布尔人


由于
是真实的,所以数组的所有元素都是真实的
我建议使用一行代码:

arr.every(b => b)
我建议结合使用

var boolArr1=[true,true,true],
boolArr2=[true,true,false];
document.write('boolArr1:'+boolArr1.every(Boolean));
文件。写(“
”);
document.write('boolArr2:'+boolArr2.every(Boolean))会有帮助吗:
var res1=boolArr1.every(i=>i)在这种情况下可读性更强。@vp_arth-我看不出这与问题有什么关系。这个问题是关于
&&
,我的答案试图解决这个问题。如果目的是测试所有值是否真实,那么您是正确的,但问题应该修改。