如何将一个String和多个String值进行比较思路分析


Posted in Javascript onApril 22, 2013

开发中我们经常需要将一个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(['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'; 
}
Javascript 相关文章推荐
JavaScript之编码规范 推荐
May 23 Javascript
原生javascript实现无间缝滚动示例
Jan 28 Javascript
JS实现文档加载完成后执行代码
Jul 09 Javascript
轻松实现jquery手风琴效果
Jan 14 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
Sep 27 Javascript
Javascript 链式作用域详细介绍
Feb 23 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
Mar 22 Javascript
jQuery中extend函数简单用法示例
Oct 11 jQuery
JS实现Cookie读、写、删除操作工具类示例
Aug 28 Javascript
js闭包的9个使用场景
Dec 29 Javascript
详解如何解决使用JSON.stringify时遇到的循环引用问题
Mar 23 Javascript
AJAX实现指定部分页面刷新效果
Oct 16 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
Apr 22 #Javascript
『jQuery』名称冲突使用noConflict方法解决
Apr 22 #Javascript
『jQuery』.html(),.text()和.val()的概述及使用
Apr 22 #Javascript
『jQuery』取指定url格式及分割函数应用
Apr 22 #Javascript
网页整体变灰白色(兼容各浏览器)实例
Apr 21 #Javascript
文字不间断滚动(上下左右)实例代码
Apr 21 #Javascript
JavaScript对象和字串之间的转换实例探讨
Apr 21 #Javascript
You might like
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
超级简单的发送邮件程序
2006/10/09 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
PHP中调用SVN命令更新网站方法
2015/01/07 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
js运动框架_包括图片的淡入淡出效果
2013/05/11 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
[19:15]DK战队纪录片
2014/09/02 DOTA
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
总经理岗位职责范本
2014/02/02 职场文书
房屋买卖协议书范本
2014/04/10 职场文书
个人综合鉴定材料
2014/05/23 职场文书
供应链金融服务方案
2014/05/25 职场文书
银行求职信
2014/05/31 职场文书
求职自我评价怎么写
2015/03/09 职场文书