如何将一个String和多个String值进行比较思路分析_javascript技巧

开发中我们经常需要将一个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';
}

时间: 2025-01-21 07:39:37

如何将一个String和多个String值进行比较思路分析_javascript技巧的相关文章

javascript原始值和对象引用实例分析_javascript技巧

本文实例讲述了javascript原始值和对象引用的方法.分享给大家供大家参考.具体分析如下: 一句话来说:原始值是不可变的,而对象引用是可变的. js中的原始值(undefined.null.布尔值.数字和字符串)与对象(包括数组和函数)有着本质的区别.原始值是不可更改的,任何方法都无法更改一个原始值:对于字符串来说,字符串中所有的方法看上去返回了一个修改后的字符串,实际上返回的是一个新的字符串值: var str="hello world"; s.toUpperCase(); s;

Javascript中String的常用方法实例分析_javascript技巧

本文实例讲述了Javascript中String的常用方法.分享给大家供大家参考.具体如下: // length属性:获取字符串的字符个数. var s='爱像一阵风'; alert(s.length); // charAt(index)方法:获取指定索引位置的字符,索引从0开始 var s1='我不要再想你'; alert(s1.charAt(4));//想 // indexOf('e',startIndex)方法:获取指定字符串第一次出现的位置.startIndex表示从第几个开始搜索. v

JS中把字符转成ASCII值的函数示例代码_javascript技巧

字符转ascii码:用charCodeAt();ascii码转字符:用fromCharCode(); 看一个小例子 复制代码 代码如下: <script>str="A";code = str.charCodeAt(); str2 = String.fromCharCode(code);str3 = String.fromCharCode(0x60+26); document.write(code+'<br />');document.write(str2+'&l

详解JS 比较两个Json对象的值是否相等的实例_javascript技巧

复制代码 代码如下: //比较数组是否相同  modeler.compArray=function(array1,array2)  {    if((array1&&typeof array1 ==="object"&&array1.constructor===Array)&&(array2&&typeof array2 ==="object"&&array2.constructor==

javascript中String对象的slice()方法分析_javascript技巧

本文较为详细的分析了javascript中String对象的slice()方法.分享给大家供大家参考.具体分析如下: 此方法截取字符串中的一段,并返回由被截取字符组成的新字符串. 注:原字符串不会发生改变,返回值是一个新产生的字符串.语法结构: 复制代码 代码如下: stringObject.slice(start,end) 参数列表: 参数 描述 start  必需.规定从何处开始截取字符串.字符串的首字符的位置是0. 如果此参数为负数,那么将从字符串的尾部开始计算位置.例如:-1代表倒数第一

为Javascript中的String对象添加去除左右空格的方法(示例代码)_javascript技巧

如下所示: String.prototype.trim=function(){   var m=this.match(/^\s*(\S+(\s+\S+)*)\s*$/);   return (m==null)?"":m[1];} 使用:var  message ="  我很好  ";message.trim();

关于JS中match() 和 exec() 返回值和属性的测试_javascript技巧

语法: exec() : RegExpObject.exec(string) match() : stringObject.match(string) stringObject.match(regexp) 知识点: exec() 是RegExp对象的方法,而 match() 是String对象的方法. 都会返回包含第一个匹配项信息的数组:或者在没有匹配项的情况下返回null. 返回的数组虽然是Array 的实例,但包含两个额外的属性:index 和 input.其中,index 表示匹配项在字符

JavaScript中获取HTML元素值的三种方法_javascript技巧

JavaScript中取得元素的方法有三种:分别是: 1.getElementById() 方法:通过id取得HTML元素. 2.getElementsByName()方法:通过name取得元素,是一个数组. 3.getElementsByTagName()方法:通过HTML标签取得元素,是一个数组. 如果要取得值可以使用value,如:var x=document.getElementById("id").value; 方法一:getElementById() 方法可返回对拥有指定

浅谈JavaScript 函数参数传递到底是值传递还是引用传递_javascript技巧

在传统的观念里,都认为JavaScript函数传递的是引用传递(也称之为指针传递),也有人认为是值传递和引用传递都具备.那么JS的参数传递到底是怎么回事呢?事实上以下的演示也完全可以用于Java 首先来一个比较简单的,基本类型的传递: function add(num){ num+=10; return num; } num=10; alert(add(num)); aelrt(num); //输出20,10 对于这里的输出20,10,按照JS的官方解释就是在基本类型参数传递的时候,做了一件复制