Javascript:基于几种不同情况的继续声明

时间:2017-11-01 17:10:48

标签: javascript

有没有更好的方法来写这个?我试图教自己良好的javascript编码习惯和技巧,这只是我无法理解的一件事:

var testData = rowData[1].toLowerCase();
if((testData == "bar") || (testData == "server") || (testData == "service breakfast")){ 
  continue; 
  }
if((testData == "service dinner") || (testData == "to go")){ 
  continue; 
  }

这很有效,但基本上是一个强大的力量"攻击问题。我尝试过使用数组和.match函数,但testData中有子字符串,它匹配并且不应该。快速示例是如果testData ='服务器/调酒师',它匹配' bar'在酒保,不应该。

3 个答案:

答案 0 :(得分:3)

根据偏好,有很多选择。 首先,通过简单的格式更改,您可能会发现代码更具可读性:

if (testData == "bar ||
    testData == "server" ||
    testData == "service breakfast ||
    testData == "service dinner" ||
    testData == "to go") {
  continue;
}

如果你不喜欢,那就是javascript的开关/案例陈述:

switch (testData) {
  case "bar":
  case "server":
  case "service breakfast":
  case "service dinner":
  case "to go":
    continue;
}

或者你可以测试一系列选项:

const options = ["bar", "server", "service breakfast", "service dinner", "to go"];
if (options.includes(testData)) {
  continue;
}

甚至使用正则表达式:

const pattern = /^(bar|server|service breakfast|service dinner|to go)$/;
if (pattern.test(testData)) {
  continue;
}

我的个人偏好是针对一系列值进行测试,但javascript提供了许多选项来做你想要的事情;你可以自由选择对你最有意义的那个。

答案 1 :(得分:1)

您可以尝试这样的事情:

var testData = rowData[1].toLowerCase();
var skip = ["bar", "server", "service breakfast", "service dinner", "to go"];
if (skip.indexOf(testData) > -1) continue; 

也许你会发现这个更简单...

答案 2 :(得分:0)

var testData = rowData[1].toLowerCase();
const continueCaseA = ["bar", "server", "service breakfast"];
const continueCaseB = ["service dinner", "to go"];
if(continueCaseA.includes(testData)){ 
  console.log("caseA")
  continue;
}
if(continueCaseB.includes(testData)){ 
  console.log("caseB")
  continue;
}

https://jsfiddle.net/hs9vt2zd/

你可以尝试这个:)

.match函数可以工作,如果你有一些模式来检查

var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var regexp = /[A-E]/gi;
var matches_array = str.match(regexp);

console.log(matches_array);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match

我不确定,这是你的情况