link examples ejemplos define code javascript jquery

javascript - examples - jQuery.inArray(), ¿cómo usarlo bien?



jquery link (16)

Devolverá el índice del elemento en la matriz. Si no se encuentra, obtendrás -1

La primera vez que trabajo con jQuery.inArray() y actúa un poco extraño.

Si el objeto está en la matriz, devolverá 0, pero 0 es falso en Javascript. Así se producirá lo siguiente: "NO está en la matriz"

var myarray = []; myarray.push("test"); if(jQuery.inArray("test", myarray)) { console.log("is in array"); } else { console.log("is NOT in array"); }

Tendré que cambiar la sentencia if a:

if(jQuery.inArray("test", myarray)==0)

Pero esto hace que el código sea ilegible. Especialmente para alguien que no conoce esta función. Esperarán que jQuery.inArray ("test", myarray) dé verdadero cuando "test" esté en la matriz.

Entonces mi pregunta es, ¿por qué se hace de esta manera? Realmente no me gusta esto. Pero debe haber una buena razón para hacerlo así.


El método jQuery inArray () se usa para buscar un valor en una matriz y devolver su índice, no un valor booleano. Y si no se encontró el valor, devolverá -1.

Entonces, para verificar si un valor está presente en una matriz, siga la práctica a continuación:

myArray = new Array("php", "tutor"); if( $.inArray("php", myArray) !== -1 ) { alert("found"); }

Reference


Hombre, mira el doc .

por ejemplo:

var arr = [ 4, "Pete", 8, "John" ]; console.log(jQuery.inArray( "John", arr ) == 3);


La forma correcta de usar inArray(x, arr) no es usarlo en absoluto , sino usar arr.indexOf(x) .

El nombre estándar oficial también es más claro en el hecho de que el valor devuelto es un índice, por lo tanto, si el elemento que se aprueba es el primero, obtendrá un 0 (que es falso en Javascript).

(Tenga en cuenta que arr.indexOf(x) no se admite en Internet Explorer hasta IE9 , por lo que si necesita admitir IE8 y versiones anteriores, esto no funcionará, y la función jQuery es una mejor alternativa).


La función inArray devuelve el índice del objeto suministrado como el primer argumento de la función en la matriz suministrada como el segundo argumento de la función.

Cuando inArray devuelve 0 , indica que se encontró el primer argumento en la primera posición de la matriz suministrada.

Para usar inArray dentro de una sentencia if use:

if(jQuery.inArray("test", myarray) != -1) { console.log("is in array"); } else { console.log("is NOT in array"); }

inArray devuelve -1 cuando el primer argumento pasado a la función no se encuentra en la matriz pasada como segundo argumento.


La respuesta proviene del primer párrafo de la documentación para verificar si los resultados son mayores que -1, no si son verdaderos o falsos.

El método $ .inArray () es similar al método nativo .indexOf () de JavaScript en que devuelve -1 cuando no encuentra una coincidencia. Si el primer elemento dentro de la matriz coincide con el valor, $ .inArray () devuelve 0.

Debido a que JavaScript trata el 0 como vagamente igual a falso (es decir, 0 == falso, pero 0! == falso), si estamos comprobando la presencia de valor dentro de la matriz, debemos verificar si no es igual a (o mayor que ) -1.


O si desea obtener un poco de fantasía, puede usar los operadores bitwise not (~) y lógicos not (!) Para convertir el resultado de la función inArray a un valor booleano.

if(!!~jQuery.inArray("test", myarray)) { console.log("is in array"); } else { console.log("is NOT in array"); }


Si queremos comprobar si un elemento está dentro de un conjunto de elementos, podemos hacerlo, por ejemplo:

var checkboxes_checked = $(''input[type="checkbox"]:checked''); // Whenever a checkbox or input text is changed $(''input[type="checkbox"], input[type="text"]'').change(function() { // Checking if the element was an already checked checkbox if($.inArray( $(this)[0], checkboxes_checked) !== -1) { alert(''this checkbox was already checked''); } }


Simplemente nadie usa $ lugar de jQuery :

if ($.inArray(nearest.node.name, array)>=0){ console.log("is in array"); }else{ console.log("is not in array"); }


Suelo usar

if(!(jQuery.inArray("test", myarray) < 0))

o

if(jQuery.inArray("test", myarray) >= 0)


en lugar de usar jQuery.inArray() también puede usar el método jQuery.inArray() para int array:

var array1 = [1, 2, 3]; console.log(array1.includes(2)); // expected output: true var pets = [''cat'', ''dog'', ''bat'']; console.log(pets.includes(''cat'')); // expected output: true console.log(pets.includes(''at'')); // expected output: false

ver la publicación oficial here


jQuery.inArray () devuelve el índice del elemento en la matriz, o -1 si no se encontró el elemento. Lea más aquí: $.inArray


$.inArray devuelve el índice del elemento si se encuentra o -1 si no lo está, no es un valor booleano. Así que lo correcto es

if(jQuery.inArray("test", myarray) != -1) { console.log("is in array"); } else { console.log("is NOT in array"); }


$.inArray() hace lo MISMO EXACTO como myarray.indexOf() y devuelve el índice del elemento en el que está comprobando la existencia de la matriz. Es solo compatible con versiones anteriores de IE antes de IE9. La mejor opción es probablemente usar myarray.includes() que devuelve un valor booleano verdadero / falso. Vea el fragmento a continuación para ver ejemplos de resultados de los 3 métodos.

// Declare the array and define it''s values var myarray = [''Cat'', ''Dog'', ''Fish'']; // Display the return value of each jQuery function // when a radio button is selected $(''input:radio'').change( function() { // Get the value of the selected radio var selectedItem = $(''input:radio[name=arrayItems]:checked'').val(); $(''.item'').text( selectedItem ); // Calculate and display the index of the selected item $(''#indexVal'').text( myarray.indexOf(selectedItem) ); // Calculate and display the $.inArray() value for the selected item $(''#inArrVal'').text( $.inArray(selectedItem, myarray) ); // Calculate and display the .includes value for the selected item $(''#includeVal'').text( myarray.includes(selectedItem) ); });

#results { line-height: 1.8em; } #resultLabels { width: 14em; display: inline-block; margin-left: 10px; float: left; } label { margin-right: 1.5em; } .space { margin-right: 1.5em; }

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> Click a radio button to display the output of &nbsp;<code>$.inArray()</code> &nbsp;vs. <code>myArray.indexOf()</code> &nbsp;vs. <code>myarray.includes()</code> &nbsp;when tested against &nbsp;<code>myarray = [''Cat'', ''Dog'', ''Fish''];</code><br><br> <label><input type="radio" name="arrayItems" value="Cat"> Cat</label> <label><input type="radio" name="arrayItems" value="Dog"> Dog</label> <label><input type="radio" name="arrayItems" value="Fish"> Fish</label> <label><input type="radio" name="arrayItems" value="N/A"> ← Not in Array</label> <br><br> <div id="results"> <strong>Results:</strong><br> <div id="resultLabels"> myarray.indexOf( "<span class="item">item</span>" )<br> $.inArray( "<span class="item">item</span>", myarray )<br> myarray.includes( "<span class="item">item</span>" ) </div> <div id="resultOutputs"> <span class="space">=</span><span id="indexVal"></span><br> <span class="space">=</span><span id="inArrVal"></span><br> <span class="space">=</span><span id="includeVal"></span> </div> </div>


inArray devuelve el índice del elemento en la matriz, no un valor booleano que indica si el elemento existe en la matriz. Si el elemento no fue encontrado, se devolverá -1 .

Por lo tanto, para verificar si un elemento está en la matriz, use:

if(jQuery.inArray("test", myarray) !== -1)


/^(one|two|tree)$/i.test(field) // field = Two; // true /^(one|two|tree)$/i.test(field) // field = six; // false /^(раз|два|три)$/ui.test(field) // field = Три; // true

Esto es útil para verificar variables dinámicas. Este método es fácil de leer.