如何将一个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 相关文章推荐
javascript 面向对象编程 万物皆对象
Sep 17 Javascript
在表单提交前进行验证的几种方式整理
Jul 31 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
Nov 08 Javascript
Javascript 浮点运算精度问题分析与解决
Mar 26 Javascript
简单易用的倒计时js代码
Aug 04 Javascript
js实现上传图片预览的方法
Feb 09 Javascript
Easyui form combobox省市区三级联动
Jan 13 Javascript
Bootstrap按钮组件详解
Apr 26 Javascript
javaScript基础详解
Jan 19 Javascript
深入理解ES6 Promise 扩展always方法
Sep 26 Javascript
打通前后端构建一个Vue+Express的开发环境
Jul 17 Javascript
JavaScript如何使用插值实现图像渐变
Jun 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
Laravel ORM 数据model操作教程
2019/10/21 PHP
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
JS中的BOM应用
2018/02/02 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
python使用minimax算法实现五子棋
2019/07/29 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
环境科学专业个人求职的自我评价
2013/11/28 职场文书
计算机相关的自我评价
2014/01/15 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
文明村镇申报材料
2014/05/06 职场文书
师德师风自查总结
2014/10/14 职场文书
员工开除通知书
2015/04/25 职场文书
民事起诉书范本
2015/05/19 职场文书
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL