Javascript JQuery-检查值是否在数组中
基本上我有一个带子数组的数组,如下所示Javascript JQuery-检查值是否在数组中,javascript,jquery,arrays,Javascript,Jquery,Arrays,基本上我有一个带子数组的数组,如下所示 var test = [['code', 'name'], ['code', 'name'], ['code', 'name'], ['code', 'name'], ['code', 'name']]; 我有一个输入。 单击“提交”后,我需要检查输入值是否已在数组中,如果已在数组中,则显示错误消息 我已经尝试过使用这段代码,但它不起作用。它没有显示错误 var value = labelInput.val(); if(jQuery.inArray(va
var test = [['code', 'name'], ['code', 'name'], ['code', 'name'], ['code', 'name'], ['code', 'name']];
我有一个输入。
单击“提交”后,我需要检查输入值是否已在数组中,如果已在数组中,则显示错误消息
我已经尝试过使用这段代码,但它不起作用。它没有显示错误
var value = labelInput.val();
if(jQuery.inArray(value, test) !== -1) {
labelInput.addClass("sp-validation-error");
}
只需在子数组中循环并使用相同的方法:
var value = labelInput.val(),
found = false;
for (var i = 0; i < test.length; i++) {
if (jQuery.inArray(value, test[i])) {
alert('found!');
found = true;
break;
}
}
if (found) {
labelInput.addClass("sp-validation-error");
}
var value=labelInput.val(),
发现=错误;
对于(变量i=0;i
另请参见仅循环子数组并使用相同的方法:
var value = labelInput.val(),
found = false;
for (var i = 0; i < test.length; i++) {
if (jQuery.inArray(value, test[i])) {
alert('found!');
found = true;
break;
}
}
if (found) {
labelInput.addClass("sp-validation-error");
}
var value=labelInput.val(),
发现=错误;
对于(变量i=0;i
另请参见您也可以使用以下方法进行无循环操作
var value = labelInput.val();
if( test.join(",").match(new RegExp(value, "gi")) !== null ) {
labelInput.addClass("sp-validation-error");
}
注意:RegExp
比indexOf
慢一点。因此,您还可以使用:
if( test.join(",").indexOf(value) !== -1 ) {
labelInput.addClass("sp-validation-error");
}
您也可以不使用循环执行以下操作
var value = labelInput.val();
if( test.join(",").match(new RegExp(value, "gi")) !== null ) {
labelInput.addClass("sp-validation-error");
}
注意:RegExp
比indexOf
慢一点。因此,您还可以使用:
if( test.join(",").indexOf(value) !== -1 ) {
labelInput.addClass("sp-validation-error");
}
尽管已经有了一个公认的答案,但我觉得还有一种更为优雅的方式 您也可以使用
some
,而不是将数组加入字符串并搜索该字符串:
if (test.some(function(element) { return element.indexOf(value) !== -1 })) {
// do stuff
}
虽然已经有了一个公认的答案,但我觉得还有一种更为优雅的方式 您也可以使用
some
,而不是将数组加入字符串并搜索该字符串:
if (test.some(function(element) { return element.indexOf(value) !== -1 })) {
// do stuff
}
测试数组中的所有子项也是一个数组。因此,您必须循环检查测试数组中的每个项,然后执行
jQuery.inArray
以查找您的输入字段值是否存在于测试数组中。对于ref。测试数组中所有子项的可能重复项也是一个数组。因此,您必须循环检查测试数组中的每个项,然后执行jQuery.inArray
以查找您的输入字段值是否存在于测试数组中。对于可能的重复,我不太理解索引变量的含义。我应该定义它,还是这个代码有效?这个代码应该有效。索引变量是测试数组中每个迭代的代表。查看javascript for循环。记住使用(测试中的var index)
而不是(测试中的index)
,因为您不想创建全局变量!它还可以在数组上使用for..in
而不是for
。我不太理解索引变量的含义。我应该定义它,还是这个代码有效?这个代码应该有效。索引变量是测试数组中每个迭代的代表。查看javascript for循环。记住使用(测试中的var index)
而不是(测试中的index)
,因为您不想创建全局变量!它还可以在数组上使用for..in
而不是for
。这可能是最不恰当的方法。如果您想使用字符串,只需使用indexof而不是regex,这是完整的overkill@Alex我已经编辑了我的答案以适应performant版本。谢谢这可能是最不恰当的做法。如果您想使用字符串,只需使用indexof而不是regex,这是完整的overkill@Alex我已经编辑了我的答案以适应performant版本。谢谢我知道。您可以使用polyfill或任何东西。ms放弃了对ie8的支持,所以我不想再麻烦了:)我知道。您可以使用polyfill或任何东西。ms放弃了对ie8的支持,因此我不再为此烦恼了:)