TS中Map的get方法可用,数组TestProductIds如何实现存在判断?
解决数组判断元素存在的问题
你这里的核心问题是数组类型没有get方法:原来的purchasedProductIds是Map类型,get方法会返回对应的值(存在时返回number,不存在返回undefined,filter回调里会自动转成布尔值);而TestProductIds是string[]数组类型,得用数组专属的方法来判断元素是否存在。
直接用数组的includes()方法就能完美替代原来的逻辑,它会直接返回布尔值,刚好符合filter回调的判断要求:
CustomersPurchasedProduct(): Customer[] { return this.customers.toArray().filter(customer => customer.TestProductIds.includes(this.selectedProduct.id) ); }
补充说明:
includes()方法采用严格匹配(和===逻辑一致),完全对应你原来Map用字符串key的判断逻辑;- 如果需要兼容不支持ES7的旧环境,也可以用
indexOf()替代:customer.TestProductIds.indexOf(this.selectedProduct.id) !== -1,不过includes()语义更直观,推荐优先使用。
内容的提问来源于stack exchange,提问作者user9049996
相关产品推荐
相关产品推荐

