Digamos que tengo esto:
var blockedTile = new Array("118", "67", "190", "43", "135", "520");
Hay más elementos de matriz, pero esos son solo algunos para fines de legibilidad. De todos modos, podría hacer un bucle "for", pero haría 500 bucles cada vez que haga clic en el mapa ... ¿hay alguna otra manera de ver si cierta cadena está en una matriz?
javascript
prueba
fuente
fuente
if(!!~blockedTile.indexOf('118))
este método siempre devolverá verdadero si el resultado> -1 y falso si el resultado === -1indexOf()
También se puede aplicar en matrices literales, por ejemploif (-1 == [84, 116].indexOf(event.keyCode))
. Probado en Chrome 37.0.2062.122.indexOf(…) >= 0
. no hace ninguna diferencia y olvido dónde lo recogí como un hábitoComo se mencionó anteriormente, si su navegador es compatible
indexOf()
, ¡genial! De lo contrario, debe polifilarlo o confiar en un cinturón de servicios públicos como lodash / subrayado .Solo quería agregar este nuevo ES2016 adición (para mantener esta pregunta actualizada):
Array.prototype.includes ()
fuente
fuente
Use Underscore.js
Es compatible con varios navegadores y puede realizar una búsqueda binaria si sus datos están ordenados.
_.índice de
Ejemplo
fuente
Algunos navegadores son compatibles
Array.indexOf()
.Si no, podría aumentar el
Array
objeto a través de su prototipo de esta manera ...Fuente .
fuente
Solo use para su gusto:
fuente
fuente
La mejor manera de hacerlo en 2019 es usando
.includes()
El primer parámetro es lo que estás buscando. El segundo parámetro es la posición del índice en esta matriz en la que comenzar a buscar.
Si necesita ser curioso aquí, hay muchas respuestas heredadas.
fuente
includes
solución está duplicada en las respuestas de Kutyel (2016), Сергей Савельев (2017) y Krunal Limbad (2018) con ejemplos y referencias igualmente detallados ...Ya respondí anteriormente pero quería compartir.
Tengo alguna referencia aquí . También tienen Polyfill para arriba.
fuente
Array.includes()
se presenta en ES7 (ECMAScript 2017) y no funcionará con navegadores antiguos. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Dependiendo de la versión de JavaScript que tenga disponible, puede usar
indexOf
:O
some
:Pero, si está haciendo este tipo de verificación de existencia, sería mejor usar un objeto para almacenar sus cadenas (o tal vez un objeto, así como la matriz, dependiendo de lo que esté haciendo con sus datos).
fuente
Usaría una estructura de datos diferente, ya que la matriz parece no ser la mejor solución.
En lugar de matriz, use un objeto como una tabla hash, así:
(publicado también en jsbin )
Salida de consola:
Esa es una solución directa. Si está más interesado en un enfoque orientado a objetos, busque en Google "js hashtable" .
fuente
En mi humilde opinión, es más compatible con navegadores antiguos
Al convertir una copia de matriz en una cadena CSV, puede probar la cadena en navegadores más antiguos.
fuente
['Lemon Pie'].inArray('Lemon')
, volveremosTrue
. Puede envolver la aguja,
para evitarlo o usar la coincidencia de expresiones regulares para hacer lo mismo, pero sería preferible unir usando algo más oscuro que,
por razones similares de falsos positivos (por|
ejemplo). Depende del conjunto de datos¿Por qué no usas Array.filter?
Simplemente copie eso en su código, y aquí está:
fuente
en el ejemplo de matriz, es lo mismo en php (in_array)
fuente
fuente
includes
. ¿Cómo proporciona esta respuesta valores adicionales en comparación con ellos?Puedes probar el siguiente código. Verifique http://api.jquery.com/jquery.grep/
compruebe arr.length si es mayor que 0 significa que la cadena está presente; de lo contrario, no está presente.
fuente
Creo que la forma más simple es que:
fuente