Javascript:continue语句基于几种不同的情况

Javascript:continue语句基于几种不同的情况,javascript,Javascript,有没有更好的写作方法?我正在努力教自己良好的javascript编码习惯和技术,这只是我无法理解的一件事: var testData = rowData[1].toLowerCase(); if((testData == "bar") || (testData == "server") || (testData == "service breakfast")){ continue; } if((testData == "service dinner") || (testData ==

有没有更好的写作方法?我正在努力教自己良好的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='Server/Bartender',它在Bartender中的'bar'上匹配,而不应该匹配。

您可以尝试以下方法:

var testData = rowData[1].toLowerCase();
var skip = ["bar", "server", "service breakfast", "service dinner", "to go"];
if (skip.indexOf(testData) > -1) continue; 
也许你会发现这更简单

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;
}

你可以试试这个:)

.如果您有一些模式需要检查,则匹配功能将起作用

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

console.log(matches_array);


我不确定,这是您的情况

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

if (testData == "bar ||
    testData == "server" ||
    testData == "service breakfast ||
    testData == "service dinner" ||
    testData == "to go") {
  continue;
}
如果您不喜欢这样,javascript的switch/case语句:

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提供了很多选项来做你想做的事情;您可以自由选择对您最有意义的选项。

首先,这对您来说是更好的选择。第二:
[“吧台”、“服务器”、“早餐服务”、…]包括(测试数据)
?当我尝试数组方法时,我正在搜索数组以查找测试数据的精确匹配。问题是我不知道如何获得函数。只能在整个单词上进行匹配。这有用吗?PS:很抱歉在这里发布而不是codereview;我从未看过那个网站。对不起,我没有正确回复。在看了Karina的答案后,我注意到你建议使用.includes函数。我没有研究.match函数,因为我认为它是一个简单的字符串比较,而不是正则表达式(我不太熟悉)。这个包裹很光滑。我不太理解CRice关于.includes的评论,并且没有正确响应。这实际上在我尝试的最终版本中产生了“更干净”的代码:if(skiplores.indexOf(rowData[1].toLowerCase()>-1)continue;我将skip重命名为skiplores(有意义的东西)当阅读代码时,我喜欢这个回复!它确实显示了许多可以使用的答案,所有答案都基于偏好、性能和需要测试的项目数量。很好。