我在这里发现了一些有类似问题但与我正在尝试的不完全相同的帖子。我目前正在使用一个简单的 if 语句来检查用户输入的数据,然后检查它是否以多个不同的值开头。我正在使用以下内容执行此操作:
var value = string;
var value = value.toLowerCase();
country = "NONE";
county = "NONE";
if (value.indexOf('ba1 ') == 0 || value.indexOf('ba2 ') == 0 || value.indexOf('ba3 ') == 0) { //CHECK AVON (MAINLAND UK) UK.AVON
country = "UK";
county = "UK.AVON";
} else if(value.indexOf('lu') == 0){//CHECK BEDFORDSHIRE (MAINLAND UK) UK.BEDS
country = "UK";
county = "UK.BEDS";
}
我有大约 20-30 个不同的 if、else 语句,它们基本上是检查输入的邮政编码并查找相关的县。然而,其中一些 if 语句非常长,所以我想将值存储在一个数组中,然后在 if 语句中简单地检查每个数组值的 value.indexOf()
。
所以在上面的示例中,我将有一个数组,如下所示:
var avon = new Array('ba1','ba 2','ba3');
然后在 indexOf()
中使用每个值
这是否可以通过最少的脚本实现,或者我是否需要创建一个函数才能使其工作?理想情况下,我希望将数组保留在 if 语句中,而不是查询每个数组值。
最佳答案
您可以使用 some
Array method (尽管您可能需要为遗留环境填充它):
var value = string.toLowerCase(),
country = "NONE",
county = "NONE";
if (['ba1 ','ba 2','ba3 '].some(function(str) {
return value.slice(0, str.length) === str;
})) {
country = "UK";
county = "UK.AVON";
}
(也使用性能更高的 How to check if a string "StartsWith" another string? 实现)
对于更短的条件,您还可以求助于正则表达式( anchor 和 alternation ):
if (/^ba(1 | 2|3 )/i.test(string)) { … }
关于Javascript 如果值在数组中,否则在下一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18874878/