如何将一个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 相关文章推荐
Prototype使用指南之range.js
Jan 10 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
Mar 04 Javascript
Javascript定义类(class)的三种方法详解
Mar 13 Javascript
js Canvas绘制圆形时钟教程
Feb 06 Javascript
简单实现js倒计时功能
Feb 13 Javascript
详解webpack es6 to es5支持配置
May 04 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
Aug 24 Javascript
vue2 设置router-view默认路径的实例
Sep 20 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
Jan 21 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
May 09 Javascript
Vue自动构建发布脚本的方法示例
Jul 24 Javascript
JavaScript实现消消乐的源代码
Jan 12 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
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
javascript贪吃蛇完整版(源码)
2013/12/09 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
javascript 闭包详解
2015/02/15 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
Node.js模拟发起http请求从异步转同步的5种用法
2018/09/26 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
js get和post请求实现代码解析
2020/02/06 Javascript
Python fileinput模块使用实例
2015/06/03 Python
python杀死一个线程的方法
2015/09/06 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
详解Python的三种拷贝方式
2020/02/11 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
大学毕业生通用求职信
2013/09/28 职场文书
预备党员党课思想汇报
2014/01/13 职场文书
11月红领巾广播稿
2014/01/17 职场文书
庆元旦迎新年广播稿
2014/02/18 职场文书
国际经济贸易专业自荐信
2014/06/13 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
我爱我班主题班会
2015/08/13 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers