¿Cómo encontrar si un array contiene una cadena específica en JavaScript/jQuery?
¿Puede alguien decirme cómo detectar si `"specialword"aparece en un array? Ejemplo:
categories: [
"specialword"
"word1"
"word2"
]
564
3
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 de la matriz. El-1
indica que el elemento no fue encontrado.begin snippet: js hide: true console: true babel: false -->
...fin del fragmento..;
Edición 3,5 años después
$.inArray
es efectivamente una envoltura paraArray.prototype.indexOf
en los navegadores que lo soportan (casi todos hoy en día), mientras que proporciona un shim en aquellos que no lo hacen. Es esencialmente equivalente a añadir un shim aArray.prototype
, que es una forma más idiomática/JSish de hacer las cosas. MDN proporciona dicho código. Hoy en día yo tomaría esta opción, en lugar de usar el wrapper de jQuery.begin snippet: js hide: true console: true babel: false -->
Editar otros 3 años después
Dios, ¿6,5 años?
La mejor opción para esto en el Javascript moderno es
Array.prototype.includes
:Sin comparaciones y sin resultados confusos de
-1
. Hace lo que queremos: devuelvetrue
ofalse
. Para los navegadores más antiguos es polyfillable usando el código en MDN.begin snippet: js hide: true console: true babel: false -->
Aquí tienes:
Esta función devuelve un entero positivo (el índice de la matriz del valor dado), o
-1
si el valor dado no se encontró en la matriz.Demostración en vivo: http://jsfiddle.net/simevidas/5Gdfc/
Probablemente quieras usar esto así:
Puedes utilizar un bucle
for
: