Hola,
Necesito comprobar si un valor existe dentro de un array con Javascript..me gustaria saber si existe una funcion parecida a in_array de PHP. Un saludo y gracias!
| ||||
Re: Funcion similiar a in_array pero en javascript. Probá así: Código PHP:
__________________ Fast, lightweight, cross-platform framework for building incredible, powerful JavaScript applications |
| ||||
Re: Funcion similiar a in_array pero en javascript. Hola: Por aportar algo. Si vamos a buscar distintos elementos en un array muy grande, lo mejor sería utilizar la sentencia elem in elArray, que es instantánea. Pero eso sólo se nos permite hacerlo si elem es índice de algún elemento del array (sólo devolverá true en caso de que exista ese índice). Para ello podemos crear un array auxiliar con nuestros valores como índices (siempre que no modifiquemos el original sin modificar el nuevo). Éste sería el test del método normal: Código PHP: Cita: Y el tiempo total ha sido de 23281ms, una burrada.
Iniciado por output Existe: false; he tardado 4016ms en buscarlo. Existe: false; he tardado 3859ms en buscarlo. Existe: false; he tardado 3781ms en buscarlo. Existe: false; he tardado 3906ms en buscarlo. Existe: false; he tardado 3907ms en buscarlo. Existe: false; he tardado 3812ms en buscarlo Sin embargo si utilizamos el array convertido del que hablo... Código PHP: Cita: Tiempo total: 5532ms. La primera búsqueda es notoriamente más larga, pero las siguientes son instantáneas, dando una ventaja al script interesante.
Iniciado por output Existe: false; he tardado 5532ms en buscarlo. Existe: false; he tardado 0ms en buscarlo. Existe: false; he tardado 0ms en buscarlo. Existe: false; he tardado 0ms en buscarlo. Existe: false; he tardado 0ms en buscarlo. Existe: false; he tardado 0ms en buscarlo. Por si alguna vez a alguien le sirve, ya sabéis que suelo postear más bien cosas experimentales . Si tenéis que hacer una cosa así, mejor ahorraros la conversión y empezar a crear directamente el array asociativo Un saludo
__________________ - Haz preguntas inteligentes, y obtendrás más y mejores respuestas. - Antes de postearlo Inténtalo y Búscalo. - Escribe correctamente tus mensajes. |
| ||||
Re: Funcion similiar a in_array pero en javascript. Hola, derkenuke, debe haber un error: Código PHP:
__________________ Fast, lightweight, cross-platform framework for building incredible, powerful JavaScript applications |
| ||||
Re: Funcion similiar a in_array pero en javascript. Sí, lo siento, no sé en qué estaba pensando. No es que hubiera un error, había varios.. Código PHP: Bueno, que el valor sea true, 1, o incluso false, undefined da igual, con tal de que tenga un valor definido explícitamente. elem in elArray sólo comprueba si ha sido inicializado, si existe. Bueno, ahora sí que sí. Gracias por hacermelo ver Panino! Saludos.
__________________ - Haz preguntas inteligentes, y obtendrás más y mejores respuestas. - Antes de postearlo Inténtalo y Búscalo. - Escribe correctamente tus mensajes. |
| ||||
Re: Funcion similiar a in_array pero en javascript. Hola: Me ha gustado el sistema que propone derkenuke, aunque cada vez que se modificase el array dejaría de ser funcional. Saludos
__________________ Por favor: No hagan preguntas de temas de foros en mensajes privados... no las respondo |
| ||||
Re: Funcion similiar a in_array pero en javascript. Hola caricatos, gracias. También podríamos actualizar el this.convertido cada vez que llamemos a in_array(), para ver si se han añadido elementos. Otra cosa es si eliminamos elementos con splice o esos métodos de array (shift, pop... no me los sé) que también podrían ser redefinidos... pero vamos. Sólo si cunde.
__________________ - Haz preguntas inteligentes, y obtendrás más y mejores respuestas. - Antes de postearlo Inténtalo y Búscalo. - Escribe correctamente tus mensajes. |
| ||||
Re: Funcion similiar a in_array pero en javascript. Hola: Sobre los métodos de los arrays hemos tenido algunas discusiones interesantes en estos foros, y de ellos empecé a hacer esta página: Arrays / Colecciones en javascript. Nuevos métodos..., en ella puse dos de los mensajes de los foros... sobre este tema en concreto yo también probé algo con conversiones... en concreto convertir el array en una cadena y si el indexOf de la cadena a buscar es -1 es por la inexistencia, pero los resultados también fueron desalentadores. Creo que una buena opción sería aconsejar que el array sea asociativo, pero si no cuela, otra manera de saber la existencia de forma más rápida, creo que podría ser con una búsqueda ordenada, ya que el método sort() es una primitiva, la búsqueda acabaría al obtener el primer elemento igual (existe) o mayor (no existe) Saludos
__________________ Por favor: No hagan preguntas de temas de foros en mensajes privados... no las respondo |
| ||||
Re: Funcion similiar a in_array pero en javascript. Hola caricatos: Qué pena que me perdiera ese hilo, seguro que habría podido aportar algo interesante. Está completísima la lista de funciones. Para búsqueda por conversión a cadena que tú comentas ya se me había pasado por la cabeza muchas veces, y la verdad: Da muchos problemas, nunca he llegado a una versión que valga para todos los casos (si es con números es muy fácil). De hecho he fabricado esta función para el ejemplo (creo que indexOf() es ligeramente más rápida que test()): Código PHP: Código PHP: He leido los dos post por encima, no sé si faltan dos funciones que echo de menos: array1.esIgual(array2); que devuelve true si cada elemento del array1 es igual al correspondiente de array2; y array1.copia(); que en algún script he necesitado hacer alguna copia de un array para hacer cambios sin tocar el original, o para entregar a una función un duplicado. No me atrevo a revivir el hilo Lo postearé aquí: Código PHP: Un saludo
__________________ - Haz preguntas inteligentes, y obtendrás más y mejores respuestas. - Antes de postearlo Inténtalo y Búscalo. - Escribe correctamente tus mensajes. |