Javascript:continue语句基于几种不同的情况
有没有更好的写作方法?我正在努力教自己良好的javascript编码习惯和技术,这只是我无法理解的一件事:Javascript:continue语句基于几种不同的情况,javascript,Javascript,有没有更好的写作方法?我正在努力教自己良好的javascript编码习惯和技术,这只是我无法理解的一件事: var testData = rowData[1].toLowerCase(); if((testData == "bar") || (testData == "server") || (testData == "service breakfast")){ continue; } if((testData == "service dinner") || (testData ==
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(有意义的东西)当阅读代码时,我喜欢这个回复!它确实显示了许多可以使用的答案,所有答案都基于偏好、性能和需要测试的项目数量。很好。