JQuery - 检查值是否在数组中

时间:2015-07-23 10:31:19

标签: javascript jquery arrays

所以基本上我有一个带有子数组的数组,看起来像这样

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");
}

3 个答案:

答案 0 :(得分:3)

只需遍历子数组并使用相同的方法:

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");
}

另见.indexOf

答案 1 :(得分:2)

已经有一个已经接受的答案了,我觉得有一种更加优雅的方式。

不是将数组连接到字符串并搜索该字符串,您也可以使用some使用单行代码:

if (test.some(function(element) { return element.indexOf(value) !== -1 })) {
  // do stuff
}

答案 2 :(得分:1)

您也可以采用以下方式进行无循环。

var value = labelInput.val();    
if( test.join(",").match(new RegExp(value, "gi")) !== null ) {
    labelInput.addClass("sp-validation-error");
}

注意:RegExpindexOf慢一点。因此,您也可以使用:

if( test.join(",").indexOf(value) !== -1 ) {
    labelInput.addClass("sp-validation-error");
}

A Demo