如何将一个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 相关文章推荐
tagName的使用,留一笔
Jun 26 Javascript
一个js实现的所谓的滑动门
May 23 Javascript
Add a Formatted Table to a Word Document
Jun 15 Javascript
asp批量修改记录的代码
Jun 25 Javascript
jQuery ajax cache缓存问题
Jul 01 Javascript
基于zepto.js简单实现上传图片
Jun 21 Javascript
微信小程序仿朋友圈发布动态功能
Jul 15 Javascript
详解vue中使用protobuf踩坑记
May 07 Javascript
浅谈layui里的上传控件问题
Sep 26 Javascript
Vue的双向数据绑定实现原理解析
Feb 17 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
May 27 Javascript
Vue如何实现验证码输入交互
Dec 07 Vue.js
『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 和 XML: 使用expat函数(二)
2006/10/09 PHP
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
2017/08/04 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
用js来解决ajax读取页面乱码
2010/11/28 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
javascript模块化简单解析
2016/04/07 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
python中的多线程实例教程
2014/08/27 Python
Python爬虫之正则表达式基本用法实例分析
2018/08/08 Python
python实现定时发送qq消息
2019/01/18 Python
谈谈Python中的while循环语句
2019/03/10 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
Spartoo比利时:欧洲时尚购物网站
2017/12/06 全球购物
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
女性健康讲座主持词
2015/07/04 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android
在js中修改html body的样式
2021/11/11 Javascript