¿Cómo saber si una matriz contiene una cadena específica en JavaScript/jQuery?

Resuelto Cofey asked hace 13 años • 7 respuestas

¿ Alguien puede decirme cómo detectar si "specialword"aparece en una matriz? Ejemplo:

categories: [
    "specialword"
    "word1"
    "word2"
]
Cofey avatar May 25 '11 03:05 Cofey
Aceptado

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.

James avatar Mar 07 '2013 16:03 James

jQuery ofrece $.inArray:

Tenga en cuenta que inArray devuelve el índice del elemento encontrado, por lo que 0indica que el elemento es el primero en la matriz. -1indica que el elemento no fue encontrado.

Mostrar fragmento de código


Editar 3,5 años después

$.inArrayes efectivamente un contenedor para Array.prototype.indexOflos 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 -1resultados confusos. Hace lo que queremos: devuelve trueo false. Para navegadores más antiguos, se puede rellenar utilizando el código en MDN .

Mostrar fragmento de código

lonesomeday avatar May 24 '2011 20:05 lonesomeday