如何将一个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 相关文章推荐
指定位置如果有图片显示图片,无图片显示广告的JS
Jun 05 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
Nov 28 Javascript
javascript校验价格合法性实例(必须输入2位小数)
May 05 Javascript
jQuery的ready方法详解
Nov 27 Javascript
js树插件zTree获取所有选中节点数据的方法
Jan 28 Javascript
javascript实现checkbox全选的代码
Apr 30 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
Sep 27 Javascript
jQuery zTree加载树形菜单功能
Feb 25 Javascript
Javascript中常用类型的格式化方法小结
Dec 26 Javascript
Vue.Draggable实现拖拽效果
Jul 29 Javascript
详解如何用typescript开发koa2的二三事
Nov 13 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
Oct 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打包网站并在线压缩为zip
2016/02/13 PHP
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
JS查看对象功能代码
2008/04/25 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
2010/08/01 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
raphael.js绘制中国地图 地图绘制方法
2014/02/12 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
一分钟理解js闭包
2016/05/04 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
python中的sort方法使用详解
2014/07/25 Python
python中MySQLdb模块用法实例
2014/11/10 Python
Pandas中把dataframe转成array的方法
2018/04/13 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
Python with语句和过程抽取思想
2019/12/23 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
电子商务专业个人的自我评价
2013/12/19 职场文书
《中国的气候》教学反思
2014/02/23 职场文书
置业顾问岗位职责
2014/03/02 职场文书
2014年端午节活动方案
2014/03/11 职场文书
演讲稿的写法
2014/05/19 职场文书
公证处委托书
2015/01/28 职场文书
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript
分享3个非常实用的 Python 模块
2022/03/03 Python