Javascript find all in array
Si prefieres usar las nuevas funciones de ES6, también puedes usar la función find incorporada, así podemos lograr el mismo resultado sin necesidad de implementar nuestra propia función para buscar un objeto en un array:
DISCLAIMER: Como básicamente todo el mundo dijo en los comentarios, sí, podrías usar la función filter en lugar de find, es igualmente simple, pero el punto de este artículo es conocer la función find. Si no conoces la función filter y quieres echarle un vistazo, también escribí este pequeño artículo hablando de ella. =)
¿Cómo se encuentra el objeto de un array?
Respuesta: Utilizar el método find()
Puedes utilizar el método find() para encontrar un objeto por un valor de propiedad en un array de objetos en JavaScript. El método find() devuelve el primer elemento del array dado que satisface la función de comprobación proporcionada. Si ningún valor satisface la función de comprobación, se devuelve undefined.
¿Cómo se comprueba si un elemento está en un array JavaScript?
Puedes utilizar el método includes() en JavaScript para comprobar si un elemento existe en un array. También puede utilizarlo para comprobar si una subcadena existe dentro de una cadena. Devuelve true si el elemento se encuentra en la matriz/cadena y false si el elemento no existe.
Javascript filtrar matriz de objetos por valor de la propiedad
Array.indexOf() se puede utilizar para averiguar si un array contiene un elemento, al igual que Array.includes() anteriormente. Sin embargo es menos legible por lo que personalmente uso .includes siempre que sea posible. Array.indexOf() también nos dice en qué posición se encuentra el elemento (la primera posición si hay más de 2 del mismo elemento), así que he incluido ejemplos de ambos aquí.
El método find() devuelve el primer elemento del array proporcionado que satisface la función de comprobación proporcionada. Si ningún valor satisface la función de comprobación, se devuelve undefined.https://developer.mozilla.org/
Es especialmente útil si estás tratando de encontrar un objeto en un Array por el valor de una de sus propiedades, y puede ser utilizado de diferentes maneras proporcionando una función de prueba diferente. En este ejemplo queremos encontrar un objeto por su propiedad nombre:
Obtener el valor de un array javascript
DescripciónEl método find() es un método iterativo. Llama a una función callbackFn proporcionada una vez por cada elemento de un array en orden de índice ascendente, hasta que callbackFn devuelve un valor verdadero. find() devuelve entonces ese elemento y deja de iterar por el array. Si callbackFn nunca devuelve un valor verdadero, find() devuelve undefined.
find() no muta la matriz sobre la que se llama, pero la función proporcionada como callbackFn sí puede hacerlo. Tenga en cuenta, sin embargo, que la longitud del array se guarda antes de la primera invocación de callbackFn. Por lo tanto:
Matriz Javascript findindex
Nota al margen: los métodos como find() o filter(), y las funciones de flecha no son soportados por los navegadores más antiguos (como IE), así que si quieres soportar estos navegadores, debes transpilar tu código usando Babel (con el polyfill).
El resultado es un array con los elementos encontrados. Si sabes que el objeto siempre está ahí y que sólo aparece una vez, puedes usar simplemente result[0].foo para obtener el valor. Si no, debes comprobar la longitud del array resultante. Ejemplo:
Realizo cuatro pruebas. En las pruebas quiero encontrar 5 objetos en 10 iteraciones del bucle (el ID de los objetos no cambia durante las iteraciones) – así que llamo al método probado 50 veces pero sólo las primeras 5 veces tienen valores de id únicos:
Esto se puede arreglar comprobando si el resultado de .find() está definido antes de usar .foo en él. El JS moderno nos permite hacer esto fácilmente con el encadenamiento opcional, devolviendo undefined si el objeto no puede ser encontrado, en lugar de bloquear tu código:
Aunque hay muchas respuestas correctas aquí, muchas de ellas no abordan el hecho de que esta es una operación innecesariamente cara si se hace más de una vez. En un caso extremo, esto podría ser la causa de verdaderos problemas de rendimiento.