Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery-检查值是否在数组中_Javascript_Jquery_Arrays - Fatal编程技术网

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的支持,因此我不再为此烦恼了:)