Javascript some()函数不适用于&&;操作人员
我尝试将some()函数与&&运算符一起使用,但始终返回false,即使这两个条件都在数组中。 例如:Javascript some()函数不适用于&&;操作人员,javascript,operators,Javascript,Operators,我尝试将some()函数与&&运算符一起使用,但始终返回false,即使这两个条件都在数组中。 例如: if (acciones.some(a => a.accionID == 7 && a.accionID == 8)) { return true; } else { return false; } 每次调用some回调时,您都会检查一个特定的accionID。一个accionID不能同时是==7和==8。任何给定的accionID将是7或8
if (acciones.some(a => a.accionID == 7 && a.accionID == 8)) {
return true;
} else {
return false;
}
每次调用
some
回调时,您都会检查一个特定的accionID
。一个accionID
不能同时是==7
和==8
。任何给定的accionID
将是7
或8
如果要查看所有帐户是否都有7
或8
的accionID
,请将每一个与|
一起使用:
if (acciones.every(a => a.accionID == 7 || a.accionID == 8)) {
// ----------^--------------------------^
if (acciones.some(a => a.accionID == 7 || a.accionID == 8)) {
// ----------^-------------------------^
如果您想查看账户中的任何账户是否有账户ID
为7
或8
,请将部分与|
一起使用:
if (acciones.every(a => a.accionID == 7 || a.accionID == 8)) {
// ----------^--------------------------^
if (acciones.some(a => a.accionID == 7 || a.accionID == 8)) {
// ----------^-------------------------^
如果acciones
中至少有一个条目,其中accionID
是(比如)6
,则每次检查都将为假,部分检查将为真
由于some
和every
已返回布尔值,因此不需要:
if (acciones.every(a => a.accionID == 7 || a.accionID == 8)) {
return true;
} else {
return false;
}
只用
return acciones.every(a => a.accionID == 7 || a.accionID == 8);
一般来说,如果你发现自己在写作:
if (x) {
return true;
} else {
return false;
}
if (x) {
return false;
} else {
return true;
}
然后:
如果x
已经是一个布尔值,您只需
return x;
如果x
不一定是布尔值(具体来说,返回布尔值很重要),您可以使用代码>使其成为布尔值的习惯用法:
return !!x;
同样,如果你发现自己在写作:
if (x) {
return true;
} else {
return false;
}
if (x) {
return false;
} else {
return true;
}
你总是可以这样写
return !x;
相反。accionID
不能同时是7
和8
您是否打算将|
用于“或”?至少相关:顺便说一句,如果(…)返回true,不要执行,否则返回false代码>,只需返回…
。