Javascript 如果值在数组中,否则在下一个数组中

标签 javascript jquery

我在这里发现了一些有类似问题但与我正在尝试的不完全相同的帖子。我目前正在使用一个简单的 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? 实现)

对于更短的条件,您还可以求助于正则表达式( anchoralternation ):

if (/^ba(1 | 2|3 )/i.test(string)) { … }

关于Javascript 如果值在数组中,否则在下一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18874878/

相关文章:

javascript - 无法修改 div 的 innerHTML

javascript - 获取 jquery slider 内容以保持可见,直到鼠标移出(新内容)

javascript - jQuery - 将标签和复选框组限制为最大数量

javascript - 处理新版本的 AngularJS Web 应用程序

javascript - 匹配电子邮件地址的正则表达式

javascript - 仅允许在未选中复选框时触发事件

javascript - 按键组合json数组,javascript

javascript - 这个 jQuery 选择是什么意思?为什么我们在 filter() 中使用 "this"?

jquery - 从嵌入的推文中删除关注按钮

javascript - 编辑每周的开放和关闭时间(每天)