如何将一个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 ObjectRange对象学习
Jul 19 Javascript
含有CKEditor的表单如何提交
Jan 09 Javascript
js二维数组定义和初始化的三种方法总结
Mar 03 Javascript
php析构函数的具体用法小结
Mar 11 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
Jun 05 Javascript
微信小程序实战之自定义toast(6)
Apr 18 Javascript
JavaScript中一些特殊的字符运算
Aug 17 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
May 02 Javascript
微信小程序Page中data数据操作和函数调用方法
May 08 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
May 13 Javascript
vue发送websocket请求和http post请求的实例代码
Jul 11 Javascript
vue实现放大镜效果
Sep 17 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之字符串变相相减的代码
2007/03/19 PHP
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
jquery实现的判断倒计时是否结束代码
2016/02/05 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
python中append实例用法总结
2019/07/30 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
Python request中文乱码问题解决方案
2020/09/17 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
来自世界各地的优质葡萄酒:VineShop24
2018/07/09 全球购物
日本小田急百货官网:Odakyu
2018/07/19 全球购物
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
C++是不是类型安全的
2014/02/18 面试题
网络体系结构及协议的定义
2014/03/13 面试题
Java基础知识面试题
2014/03/25 面试题
教师自我评价范文
2013/12/16 职场文书
运动会入场解说词
2014/02/07 职场文书
部门年终奖分配方案
2014/05/07 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
2015高考寄语集锦
2015/02/27 职场文书
出国导师推荐信
2015/03/25 职场文书
考研英语辞职信
2015/05/13 职场文书
2019年大学生职业生涯规划书
2019/03/25 职场文书