首页 / 脚本样式 / JavaScript / 如何将一个String和多个String值进行比较思路分析
开发中我们经常需要将一个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"; }
收藏该网址