los find()
El método devuelve el valor del primer elemento de la matriz proporcionada que satisface la función de prueba proporcionada. Si ningún valor satisface la función de prueba, undefined
es regresado.
- Si necesitas el índice del elemento encontrado en la matriz, use
findIndex()
. - Si necesita encontrar el índice de un valor, usar
Array.prototype.indexOf()
. (Es similar afindIndex()
, pero verifica la igualdad de cada elemento con el valor en lugar de usar una función de prueba). - Si necesita encontrar un valor existe en una matriz, use
Array.prototype.includes()
. Nuevamente, verifica la igualdad de cada elemento con el valor en lugar de usar una función de prueba. - Si necesita averiguar si algún elemento satisface la función de prueba proporcionada, utilice
Array.prototype.some()
.
Sintaxis
// Arrow function find((element) => { ... } ) find((element, index) => { ... } ) find((element, index, array) => { ... } ) // Callback function find(callbackFn) find(callbackFn, thisArg) // Inline callback function find(function callbackFn(element) { ... }) find(function callbackFn(element, index) { ... }) find(function callbackFn(element, index, array){ ... }) find(function callbackFn(element, index, array) { ... }, thisArg)
Parámetros
callbackFn
- Función a ejecutar en cada valor de la matriz, tomando 3 argumentos:
element
- El elemento actual de la matriz.
-
index
Opcional - El índice (posición) del elemento actual en la matriz.
-
array
Opcional - La matriz que
find
fue llamado.
-
thisArg
Opcional - Objeto para usar como
this
dentrocallbackFn
.
Valor devuelto
los valor de El primer elemento en la matriz que satisface la función de prueba proporcionada. De lo contrario, undefined
es regresado.
Descripción
los find
El método ejecuta el callbackFn
funcionar una vez para cada índice de la matriz hasta que el callbackFn
devuelve un veraz valor. Si es así, find
devuelve inmediatamente el valor de ese elemento. De lo contrario, find
devoluciones undefined
.
callbackFn
se invoca para cada índice de la matriz, no solo aquellos con valores asignados. Esto significa que puede ser menos eficiente para matrices dispersas, en comparación con los métodos que solo visitan valores asignados.
Si un thisArg
El parámetro se proporciona a find
, se utilizará como this
valor dentro de cada invocación del callbackFn
. Si no se proporciona, entonces undefined
se utiliza.
los find
El método no muta la matriz en la que se llama, pero la función proporcionada a callbackFn
pueden. Si es así, los elementos procesados por find
se establecen antes de la primera invocación de callbackFn
. Por lo tanto:
-
callbackFn
no visitará ningún elemento agregado a la matriz después de la llamada afind
comienza. - Si un elemento existente, aún no visitado de la matriz se cambia por
callbackFn
, su valor pasa alcallbackFn
será el valor en ese momentofind
visita el índice de ese elemento. - Elementos que son
deleted
todavía se visitan.
Ejemplos de
Encuentra un objeto en una matriz por una de sus propiedades
const inventory = [ {name: 'apples', quantity: 2}, {name: 'bananas', quantity: 0}, {name: 'cherries', quantity: 5} ]; function isCherries(fruit) { return fruit.name === 'cherries'; } console.log(inventory.find(isCherries)); // { name: 'cherries', quantity: 5 }
Usando la función de flecha y desestructuración
const inventory = [ {name: 'apples', quantity: 2}, {name: 'bananas', quantity: 0}, {name: 'cherries', quantity: 5} ]; const result = inventory.find( ({ name }) => name === 'cherries' ); console.log(result) // { name: 'cherries', quantity: 5 }
Encuentra un número primo en una matriz
El siguiente ejemplo encuentra un elemento en la matriz que es un número primo (o devuelve undefined
si no hay un número primo):
function isPrime(element, index, array) { let start = 2; while (start <= Math.sqrt(element)) { if (element % start++ < 1) { return false; } } return element > 1; } console.log([4, 6, 8, 12].find(isPrime)); // undefined, not found console.log([4, 5, 8, 12].find(isPrime)); // 5
Los siguientes ejemplos muestran que los elementos inexistentes y eliminados están visitado, y que el valor pasado a la devolución de llamada es su valor cuando se visita:
// Declare array with no elements at indexes 2, 3, and 4 const array = [0,1,,,,5,6]; // Shows all indexes, not just those with assigned values array.find(function(value, index) { console.log('Visited index ', index, ' with value ', value); }); // Shows all indexes, including deleted array.find(function(value, index) { // Delete element 5 on first iteration if (index === 0) { console.log('Deleting array[5] with value ', array[5]); delete array[5]; } // Element 5 is still visited even though deleted console.log('Visited index ', index, ' with value ', value); }); // expected output: // Deleting array[5] with value 5 // Visited index 0 with value 0 // Visited index 1 with value 1 // Visited index 2 with value undefined // Visited index 3 with value undefined // Visited index 4 with value undefined // Visited index 5 with value undefined // Visited index 6 with value 6
Especificaciones
Especificación |
---|
Especificación del lenguaje ECMAScript (ECMAScript) # sec-array.prototype.find |
Compatibilidad del navegador
Escritorio | Móvil | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Cromo | Borde | Firefox | explorador de Internet | Ópera | Safari | WebView Android | Chrome Android | Firefox para Android | Opera Android | Safari en IOS | Internet de Samsung | |
find |
45 | 12 | 25 | No | 32 | 8 | 45 | 45 | 4 | 32 | 8 | 5,0 |
Ver también
-
Array.prototype.findIndex()
– buscar y devolver un índice -
Array.prototype.includes()
– probar si existe un valor en la matriz -
Array.prototype.filter()
– eliminar todos los elementos que no coincidan -
Array.prototype.every()
– probar todos los elementos -
Array.prototype.some()
– prueba hasta que un elemento coincida