我写这想匹配一个字符串是否匹配数组中的字符串。使用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已添加的购物车商品
我会再次阅读mdn文档,但最好还是发布,以防有人快速回答。 建议表示赞赏。
答案 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);