开发中我们经常需要将一个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
jQuery jQuery提供了一个inArray方法
if ($.inArray(['banana', 'pineapple', 'mongo', 'lemon'], string) >= 0) {
fruitColor = 'yellow';
}
Underscore Underscore提供了一个contains方法
if (_.contains(['banana', 'pineapple', 'mongo', 'lemon'], string)) {
fruitColor = 'yellow';
}
正则表达式 当然,我们还有终极武器——正则表达式
if (/^(banana|pineapple|mongo|lemon)$/.test(string)) {
fruitColor = 'yellow';
}
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn