返回布尔值的更好方法

时间:2018-12-07 18:42:18

标签: javascript reactjs

我写这想匹配一个字符串是否匹配数组中的字符串。使用find()返回匹配项,但是我只想要一个布尔值,所以我写了一个if语句。有关如何重写此清洁程序以获取布尔值的任何提示或提示?

道具watchName来自库存中手表数据的map()

.map(watch => (
            <WatchItem
              isInCart={this.isInCart(watch.name)}
.....

isInCart = watchName => {
  const hasMatch = this.props.cart.find(watch => watch.item === watchName);
  if (hasMatch) {
    return true;
  } else {
    return false;
  }
};

为了更好地了解this.props.cart中的内容,我在下面添加了它 它是一个对象数组。图片显示索引[0]和索引1已添加的购物车商品

picture of this.props.cart

我会再次阅读mdn文档,但最好还是发布,以防有​​人快速回答。 建议表示赞赏。

3 个答案:

答案 0 :(得分:3)

您可以改用Array.prototype.some,它检查数组中的任何元素是否满足条件,并返回 boolean

isInCart = watchName => this.props.cart.some(watch => watch.item === watchName);

答案 1 :(得分:2)

直接将其退回。使用双重否定!!或将其包装在Boolean内。

isInCart = watchName => 
  !!this.props.cart.find(watch => watch.item === watchName);

两个

isInCart = watchName => 
  Boolean(this.props.cart.find(watch => watch.item === watchName));

答案 2 :(得分:2)

您也可以使用此

  isInCart = watchName => this.props.cart.includes(watchName);