如何将一个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第三课 修改元素属性及内容的代码
Mar 14 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
Mar 04 Javascript
原生js和jquery分别实现横向导航菜单效果
May 13 Javascript
vue上传图片组件编写代码
Jul 26 Javascript
js链表操作(实例讲解)
Aug 29 Javascript
springmvc接收jquery提交的数组数据代码分享
Oct 28 jQuery
JS实现十分钟倒计时代码实例
Oct 18 Javascript
Vuex 使用 v-model 配合 state的方法
Nov 13 Javascript
vue element ui validate 主动触发错误提示操作
Sep 21 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
Oct 24 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
Nov 12 Javascript
聊聊JS ES6中的解构
Apr 29 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手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
解决laravel 表单提交-POST 异常的问题
2019/10/15 PHP
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
php register_shutdown_function函数详解
2017/07/23 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
python3模块smtplib实现发送邮件功能
2018/05/22 Python
python函数定义和调用过程详解
2020/02/09 Python
Python模块相关知识点小结
2020/03/09 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
css3 transform导致子元素固定定位变成绝对定位的方法
2020/03/06 HTML / CSS
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
酒店管理专业毕业生推荐信
2013/11/10 职场文书
高二生物教学反思
2014/01/27 职场文书
财务务虚会发言材料
2014/10/20 职场文书
高三毕业评语
2014/12/31 职场文书
埃及王子观后感
2015/06/16 职场文书
男生贾里读书笔记
2015/06/30 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技