JS jQuery – verifica si el valor está en la matriz

Soy más una persona de PHP, no JS, y creo que mi problema es más un problema de syntax …

Tengo una pequeña jQuery para “validar” y verificar el valor de entrada.

Funciona bien para palabras individuales, pero necesito matriz.

Estoy usando el inArray() de jQuery.

 var ar = ["value1", "value2", "value3", "value4"]; // ETC... jQuery(document).ready(function() { jQuery("form#searchreport").submit(function() { if (jQuery.inArray(jQuery("input:first"), ar)){ //if (jQuery("input:first").val() == "value11") { // works for single words jQuery("#divResult").html("VALUE FOUND").show(); jQuery("#contentresults").delay(800).show("slow"); return false; } // SINGLE VALUE SPECIAL CASE / Value not allowed if (jQuery("input:first").val() == "word10") { jQuery("#divResult").html("YOU CHEAT !").show(); jQuery("#contentresults").delay(800).show("slow"); return false; } // Value not Valid jQuery("#divResult").text("Not valid!").show().fadeOut(1000); return false; }); }); 

ahora – esto if (jQuery.inArray(jQuery("input:first"), ar)) no funciona correctamente … todos los valores que puse se validarán como OK. (incluso vacío)

Necesito validar solo los valores de la matriz (ar).

También probé if (jQuery.inArray(jQuery("input:first"), ar) == 1) // 1,0,-1 tried all

Qué estoy haciendo mal ?

Pregunta extra: ¿Cómo hacer NO en array en jQuery? (el equivalente de PHP if (!in_array('1', $a)) – Creo que no funcionará, y necesito usar algo como esto: !!~

Estás comparando un objeto jQuery ( jQuery('input:first') ) con cadenas (los elementos de la matriz).
Cambie el código para comparar el valor de la entrada (que es una cadena) con los elementos de la matriz:

 if (jQuery.inArray(jQuery("input:first").val(), ar) != -1) 

El método inArray devuelve -1 si el elemento no se encontró en la matriz, así como su respuesta adicional sobre cómo determinar si un elemento no está en una matriz, use esto:

 if(jQuery.inArray(el,arr) == -1){ // the element is not in the array }; 

En cuanto a su pregunta de bonificación, pruebe if (jQuery.inArray(jQuery("input:first").val(), ar) < 0)

Solución alternativa de la comprobación de valores.

 //Duplicate Title Entry $.each(ar , function (i, val) { if ( jQuery("input:first").val()== val) alert('VALUE FOUND'+Valuecheck); }); 

La propiedad Array.prototype representa el prototipo para el constructor Array y le permite agregar nuevas properties y methods a todos los objetos Array . Podemos crear un prototipo para este fin.

 Array.prototype.has_element = function(element) { return $.inArray( element, this) !== -1; }; 

Y luego usarlo así

 var numbers= [1, 2, 3, 4]; numbers.has_element(3) => true numbers.has_element(10) => false 

Vea la demostración a continuación

 Array.prototype.has_element = function(element) { return $.inArray(element, this) !== -1; }; var numbers = [1, 2, 3, 4]; console.log(numbers.has_element(3)); console.log(numbers.has_element(10));