我试图将some()函数与&&运算符一起使用,但是即使两个条件都在数组中,但总是返回false。 例如:
if (acciones.some(a => a.accionID == 7 && a.accionID == 8)) {
return true;
} else {
return false;
}
答案 0 :(得分:4)
您正在对accionID
回调的每次调用检查一个特定的some
。 accionID
不能同时为== 7
和== 8
。任何给定的accionID
将是7
或 8
。
如果您想查看所有acciones
的{{1}}或accionID
或7
,请对8
使用every
:< / p>
||
如果要查看if (acciones.every(a => a.accionID == 7 || a.accionID == 8)) {
// ----------^--------------------------^
的任何是否具有acciones
或accionID
的{{1}},请使用7
与8
:
some
如果||
中至少有一个条目,其中if (acciones.some(a => a.accionID == 7 || a.accionID == 8)) {
// ----------^-------------------------^
是acciones
(例如),则accionID
校验为false,而6
检查是正确的。
由于every
和some
已经返回了布尔值,因此不需要:
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;
}
如果x
不一定是布尔值(特别是返回布尔值很重要),则可以使用return x;
惯用法将其设为布尔值:
x
类似地,如果您发现自己在写作:
!!
您始终可以将其写为
return !!x;
相反。