如何将一个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 相关文章推荐
验证用户是否修改过页面的数据的实现方法
Sep 26 Javascript
ajax 缓存 问题 requestheader
Aug 01 Javascript
深入理解Javascript中的循环优化
Nov 09 Javascript
Javascript添加监听与删除监听用法详解
Dec 19 Javascript
JavaScript实现获取dom中class的方法
Feb 09 Javascript
JS字符串的切分用法实例
Feb 22 Javascript
JavaScript每天必学之数组和对象部分
Sep 17 Javascript
高性能的javascript之加载顺序与执行原理篇
Jan 14 Javascript
JavaScript函数apply()和call()用法与异同分析
Aug 10 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
Oct 18 Javascript
js实现指定时间倒计时效果
Aug 26 Javascript
AJAX检测用户名是否存在的方法
Mar 24 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
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
php程序内部post数据的方法
2015/03/31 PHP
Prototype 学习 Prototype对象
2009/07/12 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
JS和canvas实现俄罗斯方块
2017/03/14 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
深入理解Python装饰器
2016/07/27 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
python字符串替换re.sub()实例解析
2020/02/09 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
高中生的自我评价
2014/03/04 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
导游词之五台山
2019/10/11 职场文书
Python Matplotlib绘制条形图的全过程
2021/10/24 Python