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 a findIndex(), 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 dentro callbackFn.

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 a find comienza.
  • Si un elemento existente, aún no visitado de la matriz se cambia por callbackFn, su valor pasa al callbackFn será el valor en ese momento find 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