Baseline Widely available
СводкаÐеÑод find()
возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение пеÑвого найденного в маÑÑиве ÑлеменÑа, коÑоÑое ÑдовлеÑвоÑÑÐµÑ ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð¿ÐµÑÐµÐ´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð² callback ÑÑнкÑии. РпÑоÑивном ÑлÑÑае возвÑаÑаеÑÑÑ undefined
.
Также ÑмоÑÑиÑе меÑод findIndex()
, коÑоÑÑй возвÑаÑÐ°ÐµÑ Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ð¾Ð³Ð¾ в маÑÑиве ÑлеменÑа вмеÑÑо его знаÑениÑ.
ÐÑли вам нÑжно найÑи позиÑÐ¸Ñ ÑлеменÑа или налиÑие ÑлеменÑа в маÑÑиве, иÑполÑзÑйÑе Array.prototype.indexOf()
или Array.prototype.includes()
ÑооÑвеÑÑÑвенно.
arr.find(callback[, thisArg])ÐаÑамеÑÑÑ
callback
ФÑнкÑиÑ, вÑзÑваÑÑаÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ знаÑÐµÐ½Ð¸Ñ Ð² маÑÑиве, пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑи аÑгÑменÑа:
element
ТекÑÑий обÑабаÑÑваемÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² маÑÑиве.
index
ÐÐ½Ð´ÐµÐºÑ ÑекÑÑего обÑабаÑÑваемого ÑлеменÑа в маÑÑиве.
array
ÐаÑÑив, по коÑоÑÐ¾Ð¼Ñ Ð¾ÑÑÑеÑÑвлÑеÑÑÑ Ð¿ÑÐ¾Ñ Ð¾Ð´.
thisArg
ÐеобÑзаÑелÑнÑй паÑамеÑÑ. ÐнаÑение, иÑполÑзÑемое в каÑеÑÑве this
пÑи вÑполнении ÑÑнкÑии callback
.
ÐнаÑение ÑлеменÑа из маÑÑива, еÑли ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿ÑоÑÑл пÑовеÑкÑ, инаÑе undefined
.
ÐеÑод find
вÑзÑÐ²Ð°ÐµÑ Ð¿ÐµÑеданнÑÑ ÑÑнкÑÐ¸Ñ callback
один Ñаз Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа, пÑиÑÑÑÑÑвÑÑÑего в маÑÑиве, до ÑеÑ
поÑ, пока она не веÑнÑÑ true
. ÐÑли Ñакой ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ð°Ð¹Ð´ÐµÐ½, меÑод find
немедленно веÑнÑÑ Ð·Ð½Ð°Ñение ÑÑого ÑлеменÑа. РпÑоÑивном ÑлÑÑае, меÑод find
веÑнÑÑ undefined
. Ðо Firefox 34 ÑÑнкÑÐ¸Ñ callback
не вÑзÑвалаÑÑ Ð´Ð»Ñ Â«Ð´ÑÑок» в маÑÑиваÑ
(bug 1058394).
ФÑнкÑÐ¸Ñ callback
вÑзÑваеÑÑÑ Ñ ÑÑÐµÐ¼Ñ Ð°ÑгÑменÑами: знаÑением ÑлеменÑа, индекÑом ÑлеменÑа и маÑÑивом, по коÑоÑÐ¾Ð¼Ñ Ð¾ÑÑÑеÑÑвлÑеÑÑÑ Ð¿ÑоÑ
од.
ÐÑли в меÑод find
бÑл пеÑедан паÑамеÑÑ thisArg
, пÑи вÑзове callback
он бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² каÑеÑÑве знаÑÐµÐ½Ð¸Ñ this
. РпÑоÑивном ÑлÑÑае в каÑеÑÑве знаÑÐµÐ½Ð¸Ñ this
бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð·Ð½Ð°Ñение undefined
.
ÐеÑод find
не изменÑÐµÑ Ð¼Ð°ÑÑив, Ð´Ð»Ñ ÐºÐ¾ÑоÑого он бÑл вÑзван.
Ðиапазон ÑлеменÑов, обÑабаÑÑваемÑÑ
меÑодом find
, ÑÑÑанавливаеÑÑÑ Ð´Ð¾ пеÑвого вÑзова ÑÑнкÑии callback
. ÐлеменÑÑ, добавленнÑе в маÑÑив поÑле наÑала вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¼ÐµÑода find
, не бÑдÑÑ Ð¿Ð¾ÑеÑÐµÐ½Ñ ÑÑнкÑией callback
. ÐÑли ÑÑÑеÑÑвÑÑÑие, непоÑеÑение ÑлеменÑÑ Ð¼Ð°ÑÑива изменÑÑÑÑÑ ÑÑнкÑией callback
, иÑ
знаÑениÑ, пеÑеданнÑе в ÑÑнкÑиÑ, бÑдÑÑ Ð·Ð½Ð°ÑениÑми на ÑÐ¾Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени когда меÑод find
поÑеÑÐ¸Ñ Ð¸Ñ
; ÑдалÑннÑе ÑлеменÑÑ Ð²Ñе еÑÑ Ð±ÑдÑÑ Ð¿Ð¾ÑеÑенÑ.
СледÑÑÑий пÑÐ¸Ð¼ÐµÑ Ð½Ð°Ñ
Ð¾Ð´Ð¸Ñ Ð² маÑÑиве положиÑелÑнÑÑ
ÑиÑел ÑлеменÑ, ÑвлÑÑÑийÑÑ Ð¿ÑоÑÑÑм ÑиÑлом (либо возвÑаÑÐ°ÐµÑ undefined
, еÑли в маÑÑиве Ð½ÐµÑ Ð¿ÑоÑÑÑÑ
ÑиÑел).
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, не найдено
console.log([4, 5, 8, 12].find(isPrime)); // 5
ÐолиÑил
ÐÑÐ¾Ñ Ð¼ÐµÑод бÑл добавлен в ÑпеÑиÑикаÑии ECMAScript 6 и пока Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ´Ð¾ÑÑÑпен во вÑÐµÑ ÑеализаÑиÑÑ JavaScript. Ðднако, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑледÑÑÑий ÑÐ½Ð¸Ð¿Ð¿ÐµÑ Ð² каÑеÑÑве полиÑила:
// https://tc39.github.io/ecma262/#sec-array.prototype.find if (!Array.prototype.find) { Object.defineProperty(Array.prototype, 'find', { value: function(predicate) { // 1. Let O be ? ToObject(this value). if (this == null) { throw new TypeError('"this" is null or not defined'); } var o = Object(this); // 2. Let len be ? ToLength(? Get(O, "length")). var len = o.length >>> 0; // 3. If IsCallable(predicate) is false, throw a TypeError exception. if (typeof predicate !== 'function') { throw new TypeError('predicate must be a function'); } // 4. If thisArg was supplied, let T be thisArg; else let T be undefined. var thisArg = arguments[1]; // 5. Let k be 0. var k = 0; // 6. Repeat, while k < len while (k < len) { // a. Let Pk be ! ToString(k). // b. Let kValue be ? Get(O, Pk). // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)). // d. If testResult is true, return kValue. var kValue = o[k]; if (predicate.call(thisArg, kValue, k, o)) { return kValue; } // e. Increase k by 1. k++; } // 7. Return undefined. return undefined; }, configurable: true, writable: true }); }СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
Array.prototype.findIndex()
ÐкÑпеÑименÑалÑÐ½Ð°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑArray.prototype.every()
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4