¿Cómo saber si una matriz contiene una cadena específica en JavaScript/jQuery?
¿ Alguien puede decirme cómo detectar si "specialword"
aparece en una matriz? Ejemplo:
categories: [
"specialword"
"word1"
"word2"
]
Realmente no necesitas jQuery para esto.
var myarr = ["I", "like", "turtles"];
var arraycontainsturtles = (myarr.indexOf("turtles") > -1);
Sugerencia : indexOf devuelve un número que representa la posición donde ocurre el valor de búsqueda especificado por primera vez, o -1 si nunca ocurre
o
function arrayContains(needle, arrhaystack)
{
return (arrhaystack.indexOf(needle) > -1);
}
Vale la pena señalar que no array.indexOf(..)
es compatible con IE < 9 , pero indexOf(...)
la función de jQuery funcionará incluso para esas versiones anteriores.
jQuery ofrece $.inArray
:
Tenga en cuenta que inArray devuelve el índice del elemento encontrado, por lo que 0
indica que el elemento es el primero en la matriz. -1
indica que el elemento no fue encontrado.
Mostrar fragmento de código
Editar 3,5 años después
$.inArray
es efectivamente un contenedor para Array.prototype.indexOf
los navegadores que lo admiten (casi todos en estos días), al tiempo que proporciona una corrección en aquellos que no lo hacen. Es esencialmente equivalente a agregar un shim a Array.prototype
, que es una forma más idiomática/JSish de hacer las cosas. MDN proporciona dicho código . Hoy en día elegiría esta opción, en lugar de usar el contenedor jQuery.
Mostrar fragmento de código
Editar otros 3 años después.
Dios, ¿6,5 años?
La mejor opción para esto en Javascript moderno es Array.prototype.includes
:
var found = categories.includes('specialword');
Sin comparaciones ni -1
resultados confusos. Hace lo que queremos: devuelve true
o false
. Para navegadores más antiguos, se puede rellenar utilizando el código en MDN .
Mostrar fragmento de código