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 ejecutacallback
.
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 |