如何将一个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 相关文章推荐
JQuery UI皮肤定制
Jul 27 Javascript
Javascript String.replace的妙用
Sep 08 Javascript
详解jQuery插件开发中的extend方法
Nov 19 Javascript
AngularJS基础学习笔记之控制器
May 10 Javascript
JS实现仿微博可关闭弹出层效果
Sep 21 Javascript
AngularJS中的Directive自定义一个表格
Jan 25 Javascript
jQuery实现可展开折叠的导航效果示例
Sep 12 Javascript
详解前端自动化工具gulp自动添加版本号
Dec 20 Javascript
深入浅析Vue中的slots/scoped slots
Apr 03 Javascript
微信小程序实现吸顶效果
Jan 08 Javascript
js校验开始时间和结束时间
May 26 Javascript
js实现淘宝浏览商品放大镜功能
Oct 28 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
用mysql内存表来代替php session的类
2009/02/01 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
使用PHP进行微信公众平台开发的示例
2015/08/21 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
JS解密入门之凭直觉解
2008/06/25 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
关于Stream和Buffer的相互转换详解
2017/07/26 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
Python中正则表达式的用法实例汇总
2014/08/18 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
浅析PEP572: 海象运算符
2019/10/15 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
工程管理专业毕业生自荐信
2014/01/24 职场文书
幼儿园区域活动总结
2014/05/08 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
财务稽核岗位职责
2015/04/13 职场文书
法人身份证明书
2015/06/18 职场文书