some()函数不适用于&&运算符

时间:2019-03-06 17:34:33

标签: javascript operators

我试图将some()函数与&&运算符一起使用,但是即使两个条件都在数组中,但总是返回false。 例如:

  if (acciones.some(a => a.accionID == 7 && a.accionID == 8)) {
    return true;
  } else {
    return false;
  }

1 个答案:

答案 0 :(得分:4)

您正在对accionID回调的每次调用检查一个特定的someaccionID 不能同时为== 7== 8。任何给定的accionID将是7 8

如果您想查看所有acciones的{​​{1}}或accionID7,请对8使用every:< / p>

||

如果要查看if (acciones.every(a => a.accionID == 7 || a.accionID == 8)) { // ----------^--------------------------^ 任何是否具有accionesaccionID的{​​{1}},请使用78

some

如果||中至少有一个条目,其中if (acciones.some(a => a.accionID == 7 || a.accionID == 8)) { // ----------^-------------------------^ acciones(例如),则accionID校验为false,而6检查是正确的。


由于everysome 已经返回了布尔值,因此不需要:

some

只需使用

every

通常,如果您发现自己在写作:

if (acciones.every(a => a.accionID == 7 || a.accionID == 8)) {
    return true;
} else {
    return false;
}

然后:

  1. 如果return acciones.every(a => a.accionID == 7 || a.accionID == 8); 已经是布尔值,则可以执行

    if (x) {
        return true;
    } else {
        return false;
    }
    
  2. 如果x不一定是布尔值(特别是返回布尔值很重要),则可以使用return x; 惯用法将其设为布尔值:

    x

类似地,如果您发现自己在写作:

!!

您始终可以将其写为

return !!x;

相反。