如何将一个String和多个String值进行比较

开发中我们经常需要将一个String和多个String值进行比较。直觉反应是使用||符号连接多个===完成,比如:

if (string === 'banana' || string === 'pineapple') {
   fruitColor = 'yellow';
}

这样能够很好的完成需求,但总觉得有点笨,并且对扩展不友好,当我们的水果种类变多时:

if (string === 'banana' || string === 'pineapple' || string === 'mongo' || string === 'lemon') {
   fruitColor = 'yellow';
}

上面的代码看起来就不那么好看了,让我们看看有什么其他方式能够处理这种需求。

Switch

switch(string) {
    case 'banana':
    case 'pineapple':
    case 'mongo':
    case 'lemon':
      fruitColor = 'yellow';
}

这看起来不错,但是总是要多打些字,对于不喜欢多打字的人来说不是个好方法。

Array

if (['banana', 'pineapple', 'mongo', 'lemon'].indexOf(string) >= 0) {
    fruitColor = 'yellow';
}

这下好多了,但还有个问题,IE9以下的IE浏览器并不支持indexOf方法,如果你要在IE<=8的环境中使用Array方式比较多个string值,要么自己写一个indexOf方法,要么就得引入一些库来做浏览器兼容。

jQuery

jQuery提供了一个inArray方法

if ($.inArray(string, ['banana', 'pineapple', 'mongo', 'lemon']) >= 0) {
    fruitColor = 'yellow';
}

Underscore

Underscore提供了一个contains方法

if (_.contains(['banana', 'pineapple', 'mongo', 'lemon'], string)) {
    fruitColor = 'yellow';
}

正则表达式

当然,我们还有终极武器——正则表达式

if (/^(banana|pineapple|mongo|lemon)$/.test(string)) {
    fruitColor = 'yellow';
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值