我寻找一个解决方案来检查labelKey
属性的值是to_be_rented
还是to_be_put_on_sale
条件我们可以用:
if (this.project.currentProduct.productStatus.labelKey === ('to_be_rented' || 'to_be_put_on_sale')) {
}
但它不起作用,我也在寻找使用Lodash或es2015的更复杂的替代方案。
我该怎么做?
答案 0 :(得分:2)
您的情况如下:
to_be_rented
||的结果to_be_put_on_sale
始终为to_be_rented
。labelKey
等于to_be_rented
。正确的解决方案是将labelKey
与两个字符串进行比较:
let labelKey = this.project.currentProduct.productStatus.labelKey;
if (labelKey === 'to_be_rented' || labelKey === 'to_be_put_on_sale')) {
...
}
使用ES2016可以简化:
let values = ['to_be_rented', 'to_be_put_on_sale'];
if (values.includes(this.project.currentProduct.productStatus.labelKey)) {
...
}
答案 1 :(得分:1)
您可以将所有变体放入数组并使用Array.prototype.indexOf()
(即使在ES5中也是如此):
const variants = ['to_be_rented', 'to_be_put_on_sale'];
const labelKey = this.project.currentProduct.productStatus.labelKey;
if (variants.indexOf(labelKey) !== -1) {
...
}
或Array.prototype.includes()
(ES2016中的内容):
if (variants.includes(labelKey)) {
...
}
如果您有两种以上的变体,这些方法会更方便。
对于您的案例Array.prototype.indexOf()
和Array.prototype.includes()
将是相同的,但您可以查看这些函数之间的差异here。
答案 2 :(得分:1)
您可以使用数组和Array#includes
来检查数组中是否存在值。
const values = ['to_be_rented', 'to_be_put_on_sale'];
if (values.includes(this.project.currentProduct.productStatus.labelKey)) {
// do something
}
答案 3 :(得分:0)
lodash方式:
var toFind = this.project.currentProduct.productStatus.labelKey;
if(_.find(['to_be_rented', 'to_be_put_on_sale'], toFind)) {
// do something
}