some()函数不能与&&运算符一起使用

问题描述 投票:2回答:1

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

  if (acciones.some(a => a.accionID == 7 && a.accionID == 8)) {
    return true;
  } else {
    return false;
  }
javascript operators
1个回答
4
投票

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

如果你想看看所有acciones是否有accionID78,请使用every||

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

如果你想看看是否有任何accionesaccionID78,请使用some||

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

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


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

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 !!x;

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

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

你总能把它写成

return !x;

代替。

© www.soinside.com 2019 - 2024. All rights reserved.