使用JavaScript代码的IN子句
我的应用程序中有JavaScript代码,它使用OR(| |)条件检查值,如下面的代码片段所示。在我的大多数代码中,OR条件的数量并不小 问题:有没有一种方法可以通过使用以下内容使具有多个或多个条件的代码更加简洁:使用JavaScript代码的IN子句,javascript,in-clause,Javascript,In Clause,我的应用程序中有JavaScript代码,它使用OR(| |)条件检查值,如下面的代码片段所示。在我的大多数代码中,OR条件的数量并不小 问题:有没有一种方法可以通过使用以下内容使具有多个或多个条件的代码更加简洁:值在('s','b','g','p','z')?我对尽可能接近in子句的内容感兴趣 if(value === "s" || value === "b" || value === "g" || value === "p" || value === "z") { //do somet
值在('s','b','g','p','z')
?我对尽可能接近in子句的内容感兴趣
if(value === "s" || value === "b" || value === "g" || value === "p" || value === "z") {
//do something
}
为什么洛达斯的功能不起作用
var val = 's';
var criterion = ['s','b','g','p','z'];
_.includes(criterion, val);
返回
true
最简单的方法是创建一个有效值数组,然后确保您的值在该列表中。您可以使用以下选项:
var allowed = ['s', 'b', 'g', 'p', 'z'];
if (allowed.indexOf(value) !== -1) {
// do something
}
ES6标准引入了集合,它必须对唯一值执行类似的操作
这适用于字符串、数字和其他简单的非对象值。仅当数组/集合已包含完全相同的对象时,将对象与
==
进行比较才会成功。您可以执行以下操作:
var values = ['s','b','g','p','z'];
if (values.indexOf(value) > -1)
事实上,JavaScript中的中有一个
,它可以准确地用于您的案例。使用您喜欢的任何值构建字典,但使用允许的字母作为键:
allowed = { 's':true, 'b':true, 'g':true, 'p':true, 'z':true };
现在您可以直接使用
测试中的(比列表中的查找更有效)。这里是从我的JavaScript控制台复制的:
's' in allowed
true
'q' in allowed
false
单个字符的解决方案:
var值='g';
if(~'sbgpz'.indexOf(值)){
document.write(值+“found”);
}
您还可以使用javascript助手
includes()
方法确定数组是否包含特定的
元素,根据需要返回true
或false
vararray1=[1,2,3];
控制台日志(阵列1.包括(2));
//预期输出:真
变量pets=[“猫”、“狗”、“蝙蝠”];
控制台日志(pets.includes('cat'));
//预期输出:真
console.log(pets.includes('at'));
//预期输出:false
将值放入数组中,并使用.indexOf()
这可能与如何将其应用于我拥有的代码段重复?我是否可以将变量作为第一个参数传递给_includes?var v=“'s'、'b'、'g'、'p'、'z'”。我发布这篇文章的时候看到了你的编辑。所以它看起来像是一个不错的库。或者只是使用criteria.includes(val)
作为ES7的一部分,或者通过问题if(['s','b','g','p','z']).includes(value))
索引是否使用严格的比较,如==?