El mètode find()
retorna un valor valor pertanyent a l'array si un element de l'array satisfà la funció de testeig donada. En cas contrari retornarà undefined
.
Vegeu també el mètode findIndex()
, que retorna la posició a la qual s'ha trobat l'element que satisfà la funció de testeig, en comptes del seu valor.
Sintaxi
arr.find(callback[, thisArg])
Paràmetres
callback
- Funció que s'executarà per a cada valor de l'array, rep tres arguments:
element
- L'element de l'array que s'està processant actualment.
posició
- La posició de l'array que s'està processant actualment.
array
- L'array des del qual s'ha cridat el mètode
find
.
thisArg
- Opcional. L'objecte a utilitzar com a
this
mentre s'executicallback
.
Descripció
El mètode find
executa la funció callback
un cop per a cada element present a l'array fins que trobi un on callback
retorni true
. Si es troba aquest element el mètode find
retorna el valor de l'element trobat immediatament. En cas contrari find
retornarà undefined
. callback
només serà invocada per a posicions de l'array que tinguin valors assignats; no serà invoada per a posicions que s'hagin eliminat o que mai hagin tingut assignat un valor.
La invocaicó de callback
té tres arguments: el valor de l'element, la posició de l'element i l'objecte array que està sent recorregut.
Si es proporciona el paràmetre thisArg
al cridar el mètode find
, aquest serà utilitzat com a this
per a cada invocació del mètode callback
. En cas de no ser proporcionat s'utilitzarà undefined
.
find
no mutarà l'array des del que es crida.
El rang d'elemnets que find
processarà es determina abans de la primera invocació a callback
. Els elements afegits a l'array després de la crida a find
no seran visitats per callback
. Si un element existent, no visitat encara, rep un altre valor, el valor percebut per callback
serà aquell que tingui l'element al ser visitat; els elements visitats no són visitats.
Exemples
Trobar un objecte en un array segons el valor d'una propietat
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 }
Trobar un nombre primer en un array
L'exemple següent troba un element dins l'array el valor del qual sigui un nombre primer (o bé retorna undefined
si no n'hi ha cap).
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, no trobat console.log([4, 5, 8, 12].find(isPrime)); // 5
Polyfill
Aquest mètode es va afegira la especificació 2015 de l'ECMAScript i pot no estar disponible encara en algunes implementacions de JavaScript. Tot i així es pot utilitzar el codi següent per a utilitzar-lo en entorns on no estigui disponible:
if (!Array.prototype.find) { Array.prototype.find = function(predicate) { 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; }; }
Especificacions
Especificació | Estat | Comentaris |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Array.prototype.find' in that specification. |
Standard | Definició inicial. |
ECMAScript 2017 Draft (ECMA-262) The definition of 'Array.prototype.find' in that specification. |
Draft |
Compatibilitat amb navegadors
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Edge | Opera | Safari |
---|---|---|---|---|---|---|
Suport bàsic | 45.0 | 25.0 (25.0) | No support | 12 | No support | 7.1 |
Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Edge | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Suport bàsic | No support | No support | 25.0 (25.0) | No support | 12 | No support | 8.0 |