Array.prototype.find()

Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.

This is a new technology, part of the ECMAScript 2015 (ES6) standard.
This technology's specification has been finalized, but check the compatibility table for usage and implementation status in various browsers.

El metodo find() retorna un valor del arreglo, si un elemento en el arreglo satisface la funcion de prueba prevista. En otro caso undefined es devuelto.

Mira también el metodo findIndex(), que retorna el índice del elemento encontrado en el arreglo en lugar de su valor.

Sintaxis

arr.find(callback[, thisArg])

Parametros

callback
Función que se ejecuta sobre cada valor en el arreglo, toma tres argumentos:
element
El actual elemento que es procesado en el arreglo.
index
El indice del actual elemento que es procesado en el arreglo.
array
El arreglo de busqueda al que se llama.
thisArg
Opcional. Objecto para usar como this cuando se ejecuta callback.

Descripción

El metodo find ejecuta la función callback una vez por cada elemento presente el arreglo hasta que encuentre uno en donde  el callback retorne un valor true. Si tal elemento es encontrado, find inmediatamente retorna el valor del elemento. En otro caso, find retorna undefined. callback es invocado solo para indices del arreglo que tienen valores asignados; este no es invocado para indices que han sido eliminados o que nunca se les ha asignado valores.

callback es invocado con tres argumentos: el valor del elemento, el indice del elemento, y el objeto Array que esta siendo atravesado.

Si un parametro thisArg es proporcionado al metodo find, este sera usado como el this para cada invocacion de el  callback, si el parametro no es proporcionado, entonces undefined es usado.

find no transformará el array desde el cual es llamado.

El rango de elementos procesados por find es fijado antes de la primera invocación de callback. Los elementos adicionados al arreglo después de que el llamado a find comience no serán visitados por callback. Si un elemento existente, no visitado del array es cambiado por callback, su valor pasado al callback visitador será el valor al momento en que find visite ese índice del elemento; elementos que sean eliminados no son visitados.

Ejemplos

Encontrar un objeto en un arreglo por una de sus propiedades

var inventory = [
    {name: 'apples', quantity: 2},
    {name: 'bananas', quantity: 0},
    {name: 'cherries', quantity: 5}
];

function findCherries(fruit) { 
    return fruit.name === 'cherries';
}

console.log(inventory.find(findCherries)); // { name: 'cherries', quantity: 5 }

Encontrar un número primo en un arreglo

El siguiente ejemplo encuentra un elemento en un array, que sea un número primo (o retorna undefined si no hay un número primo).

function isPrime(element, index, array) {
  var 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

Polyfill

Este método ha sido adicionado a la espeficicación ECMAScript 2015 y puede no estar disponible en todas las implementaciones de JavaScript aún. Sin embargo, tú puedes "polyfill" Array.prototype.find con el siguiente fragmento:

if (!Array.prototype.find) {
  Array.prototype.find = function(predicate) {
    'use strict';
    if (this == null) {
      throw new TypeError('Array.prototype.find called on null or undefined');
    }
    if (typeof predicate !== 'function') {
      throw new TypeError('predicate must be a function');
    }
    var list = Object(this);
    var length = list.length >>> 0;
    var thisArg = arguments[1];
    var value;

    for (var i = 0; i < length; i++) {
      value = list[i];
      if (predicate.call(thisArg, value, i, list)) {
        return value;
      }
    }
    return undefined;
  };
}

Especificaciones

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Array.prototype.find' in that specification.
Standard Definición inicial.

Compatibilidad con navegadores

Característica Chrome Firefox (Gecko) Internet Explorer Edge Opera Safari
Soporte básico 45.0 25.0 (25.0) No support 12 32.0 7.1
Característica Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Edge Opera Mobile Safari Mobile
Soporte básico No support No support 25.0 (25.0) No support 12 No support 8.0

 

Ver también

Etiquetas y colaboradores del documento

 Colaboradores en esta página: sancospi, chokozzy, adictovirtual, alo5
 Última actualización por: sancospi,