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

some() function is not working with && operator

我正在尝试将 some() 函数与 && 运算符一起使用,但总是 return 错误,即使这两个条件都在数组中。 例如:

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

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

如果您想查看是否所有 acciones 都具有 78accionID,请使用 every|| :

if (acciones.every(a => a.accionID == 7 || a.accionID == 8)) {
// ----------^--------------------------^

如果您想查看 acciones 任何 是否具有 78accionID,请使用some||:

if (acciones.some(a => a.accionID == 7 || a.accionID == 8)) {
// ----------^-------------------------^

如果 acciones 中至少有一个条目 accionID 是(比如)6,则 every 检查将为假,并且 some 检查将为真。


因为someevery已经return一个布尔值,所以不需要:

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;
}

然后:

  1. 如果x已经是一个布尔值,你可以只做

    return x;
    
  2. 如果 x 不一定是布尔值(重要的是你 return 是一个布尔值,特别是),你可以使用 !! 习惯用法来实现它一个布尔值:

    return !!x;
    

同样,如果您发现自己正在写作:

if (x) {
    return false;
} else {
    return true;
}

你总是可以写成

return !x;

相反。