使用Regex vs include()方法与Switch语句
Using Regex vs includes() method with Switch Statment
向OpenWeatherMap.org API发出AJAX请求以获取本地天气预报(温度、城市和天气描述)。我将天气描述分配给变量"weatherDescription"。我正在使用一个开关语句来检查"weatherDescription"是否有"clouds",例如在描述中,如果它确实改变了DOM中元素图像的图标为"cloudy"图标图像。
下面的代码在Chrome中工作,但不幸的是。includes()方法不工作在其他浏览器(Safari, IE, Opera等)。
function SwitchIcons() {
switch (true) {
case (weatherDescription.includes('clear')):
icon.className = "";
icon.classList.add("wi", "wi-day-sunny");
break;
case (weatherDescription.includes('rain')):
icon.className = "";
icon.classList.add("wi", "wi-day-rain");
}
}
SwitchIcons();
所以,我现在对一个regExp测试"weatherDescription",但是对于第一种情况,条件总是返回true(下面的例子):
var myRegExp = /sun|rain|sleet/ig;
switch (true) {
case myRegExp.test(weatherDescription)):
icon.className = "";
icon.classList.add("wi", "wi-day-sunny");
break;
case myRegExp.test(weatherDescription)):
icon.className = "";
icon.classList.add("wi", "wi-day-rain");
}
是否有可能完成相同的结果,我收到使用。includes()方法与regEx或有更好的方式来实现这一目标?
问题是g
修饰语。对test
的第二次调用将尝试从前一次匹配开始匹配,而不是从字符串的开头开始。JavaScript中的正则表达式对象具有状态,当您将g
与test
、exec
和类似的对象一起使用时,这一点很重要。
下面是一个更简单的例子:
var rex;
rex = /test/g;
snippet.log(rex.test("test")); // true
snippet.log(rex.test("test")); // false
// vs.
rex = /test/;
snippet.log(rex.test("test")); // true
snippet.log(rex.test("test")); // true
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 数组在递归方法中设置为null
- 打破承诺链的好方法是什么
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 使用“;这个“;JavaScript原型方法中的关键字
- 序列化数据属性中对象的最可靠方法
- 使用Objective-C的JavaScript注入方法
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- toBoolean方法类似于toString
- 如何在单击复选框后调用控制器方法
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 递归使用 eval() 是检查程序执行的好方法吗?
- JavaScript 将循环遍历数组的函数传递给使用 Switch 语句日期方法的函数
- 是switch case还是animate方法
- 使用Regex vs include()方法与Switch语句
- 有没有一种聪明的方法/技巧可以重用在不同情况下执行不同操作的switch语句
- 使用mocha's——debug-brk switch启用节点调试器的正确方法是什么?