如何将一个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';
}

(0)

相关推荐

  • javascript substr和substring用法比较

    substr函数和substring函数都是用来从某个"母字符串"中提取"子字符串"的函数.但用法有些差别,下面分别介绍 substr 方法 定义和用法 substr 方法用于返回一个从指定位置开始的指定长度的子字符串. 语法 stringObject.substr(start [, length ]) 参数 描述 start 必需.所需的子字符串的起始位置.字符串中的第一个字符的索引为 0. length 可选.在返回的子字符串中应包括的字符个数. 说明 如果st

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

    开发中我们经常需要将一个String和多个String值进行比较.直觉反应是使用||符号连接多个===完成,比如: 复制代码 代码如下: if (string === 'banana' || string === 'pineapple') { fruitColor = 'yellow'; } 这样能够很好的完成需求,但总觉得有点笨,并且对扩展不友好,当我们的水果种类变多时: 复制代码 代码如下: if (string === 'banana' || string === 'pineapple'

  • 聊聊Python String型列表求最值的问题

    最近在写一个项目的时候发现了个很神奇的问题 temp_list=['9','10','10','9','10'] print(max(temp_list)) # 9 print(min(temp_list)) # 10 最大值变成了9,而最小值变成了10.导致我在一个Excel表中的数据老是判断错误 分析之后原因如下: 如果比较字符串的大小,则比较的是字符的ASCII编码的大小. 在比较时,设置一个计数器,从零开始,一直循环到最短的那个字符结束,一位一位进行比较, 1.如果 字符串1的第n位的A

  • java String源码和String常量池的全面解析

    1. String 介绍,常用方法源码分析 2. String 常量池分析 常用方法 equals trim replace concat split startsWith 和 endsWith substring toUpperCase() 和 toLowerCase() compareTo String 介绍 String类被final所修饰,也就是说String对象是不可变量,并发程序最喜欢不可变量了.String类实现了Serializable, Comparable, CharSequ

  • java源码解析之String类的compareTo(String otherString)方法

    一. 前言 最近我发现了一个事情,那就是在面试笔试中,好多公司都喜欢在String字符串上出问题,涉及到方方面面的知识,包括其中的一些常用方法. String 类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. 字符串是常量:它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因为 String 对象是不可变的,所以可以共享. 近日研究了一下String类的一些方法, 通过查看源码, 对一些常用的方法也有了更透彻的认识, 也让我更加理解了设

  • MySQL系列关于NUll值的经验总结分析教程

    目录 1.测试数据 2.null值带给我们的不便影响 3.空格.空值和null,我们应该怎么判断呢? 1)空格.空值和null的区别 2)出现了null值,我应该怎么办? 1.测试数据 create table test_null ( id int, name varchar(20), chinese int, math int, english int ) charset=utf8; insert into test_null values (1,null,80,70,68), (2,'张三'

  • Java thread.isInterrupted() 返回值不确定结果分析解决

    目录 一.代码 二.分析结果 三.解决方案 一.代码 先上代码(以下这段代码会有多种执行结果) @Test public void test_interrupted_thread() throws Exception { InterruptThread interruptThread = new InterruptThread(); interruptThread.start(); interruptThread.interrupt(); System.out.println("interrup

  • Java8 将一个List<T>转为Map<String,T>的操作

    将 List 转为 Map<String, T> public class AnswerApp { public static void main(String[] args) throws Exception { List<String> names = Lists.newArrayList("Answer", "AnswerAIL", "AI"); Map<String, Integer> map = na

  • js中string转int把String类型转化成int类型

    今天做项目的时候,碰到一个问题,需要把String类型的变量转化成int类型的.按照常规,我写了var i = Integer.parseInt("112");但控制台报错,说是"'Integer' 未定义".后来,才知道,原来js中String转int和Java中不一样,不能直接把Java中的用到js中.改成var j = parseInt("11");就ok了. 备注:无论是 Java 还是 JavaScript, parseInt 方法都有

  • Android中Spinner控件之键值对用法实例分析

    本文实例讲述了Android中Spinner控件之键值对用法.分享给大家供大家参考.具体如下: 一.字典表,用来存放键值对信息 package com.ljq.activity; import java.io.Serializable; @SuppressWarnings("serial") public class Dict implements Serializable { private Integer id; private String text; public Dict()

  • Java中值传递的深度分析

    前言 首先说观点:java只有值传递没有引用传递 然后再来看看值传递与引用传递两者的定义 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数. 引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数. 这里牢记值传递中将实际参数复制一份. 然后就是对于参数类型:值类型 和 引用类型. 结合起来理解就是:值类型传递,java

随机推荐