如何将一个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 相关文章推荐
html的DOM中document对象images集合用法实例
Jan 21 Javascript
javascript将异步校验表单改写为同步表单
Jan 27 Javascript
JavaScript获取文本框内选中文本的方法
Feb 20 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
Jan 26 Javascript
基于javascript实现checkbox复选框实例代码
Jan 28 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
Sep 22 Javascript
微信小程序商城项目之淘宝分类入口(2)
Apr 17 Javascript
vue使用Axios做ajax请求详解
Jun 07 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
Sep 12 Javascript
VUE搭建手机商城心得和遇到的坑
Feb 21 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
Feb 27 Javascript
react PropTypes校验传递的值操作示例
Apr 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
php 文件上传实例代码
2012/04/19 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
document.documentElement的一些使用技巧
2013/04/18 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
javascript实现电脑和手机版样式切换
2017/11/10 Javascript
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
python的常见命令注入威胁
2013/02/18 Python
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
python 函数中的参数类型
2020/02/11 Python
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
广告学专业自荐信范文
2014/02/24 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
护士求职信范文
2014/05/24 职场文书
生物技术专业求职信
2014/06/10 职场文书
上班离岗检讨书
2014/09/10 职场文书
优秀教研组申报材料
2014/12/26 职场文书
八年级英语教学计划
2015/01/23 职场文书
庆元旦主持词
2015/07/06 职场文书
同学聚会祝酒词
2015/08/10 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python
MySQL RC事务隔离的实现
2022/03/31 MySQL