Sumar
Metoda every()
testează dacă toate elementele din array trec testul implementat prin funcția dată.
Sintaxă
arr.every(callback[, thisArg])
Parametrii
-
callback
- Funcția cu care să se testeze fiecare element din array.
-
thisArg
-
Valoarea pentru
this
care se folosește la execuția funcțieicallback
.
Descriere
Metoda every
execută funcția callback
o dată pentru fiecare element prezent în array până când găsește unul pentru care callback
returneaza o valoare falsy (o valoare care devine false atunci când e convertită la Boolean). Dacă un asemenea element este găsit, funcția every
returnează false
imediat. Altfel, dacă funcția callback
returnează o valoare adevărată (true) pentru toate elementele, every
o să returneze true
. Funcția callback
este apelată doar pentru acele indexuri din array care au valori asignate; nu este apelată pentru indexuri care au fost șterse sau cărora nu le-au fost asignate valori.
callback
este apelată cu trei parametrii: valoarea elementului curent, indexul elementului curent și obiectul Array care este traversat.
Dacă parametrul thisArg
este folosit la apelul funcției every
, acesta va fi transmis funcției callback
atunci când este apelată, spre a fi folosit drept valoare pentru this
. Altfel, valoarea undefined
va fi cea folosită ca this
. Valoarea this
care în cele din urmă este folosită de callback
este determinată conform regulilor obișnuite pentru determinarea valorii this
pentru o funcție.
Metoda every
nu modifică array-ul pentru care este apelată.
Șirul elementelor care este procesat de metoda every
este stabilit înainte de prima apelare a funcției callback
. Elementele care sunt adăugate array-ului după ce apelul metodei every
are log, nu sunt vizitate de către funcția callback
. Dacă anumite elemente din array sunt modificate, valoarea transmisă funcției callback
corespunzătoarea acestor elemente va fi valoarea la momentul în care metoda every
le accesează; elementele șterse între timp nu sunt accesate (pentru ele nu se apeleaza funcția callback)
.
every
se comportă ca un cuantificator "for all" din matematică. În speță, pentru un array vid, returnează true. (Este aproximat ca adevărat faptul că toate elementele dintr-o mulțime vidă satisfac orice condiție dată.)
Exemple
Exemplu: Testarea mărimii fiecărui element din array
Exemplul următor testează dacă toate elementele din array sunt mai mari sau egale cu 10.
function isBigEnough(element, index, array) { return (element >= 10); } var passed = [12, 5, 8, 130, 44].every(isBigEnough); // passed is false passed = [12, 54, 18, 130, 44].every(isBigEnough); // passed is true
Polyfill
Metoda every
a fost adăugată în standardul ECMA-262 în ediția a 5-a; din această cauză, s-ar putea să nu fie disponibilă în alte implementări ale standardului. Puteți repara acest lucru folosind codul următor la începutul scripturilor dvs, în acest fel permițând folosirea metodei every
în implementări care nu o suportă în mod nativ. Acest algoritm este exact cel specificat în standardul ECMA-262, ediția a 5-a, cu prezumția că Object
și TypeError
au valorile lor originale, și că fun.call
se evaluează la valoarea originală a Function.prototype.call
.
if (!Array.prototype.every) { Array.prototype.every = function(fun /*, thisArg */) { 'use strict'; if (this === void 0 || this === null) throw new TypeError(); var t = Object(this); var len = t.length >>> 0; if (typeof fun !== 'function') throw new TypeError(); var thisArg = arguments.length >= 2 ? arguments[1] : void 0; for (var i = 0; i < len; i++) { if (i in t && !fun.call(thisArg, t[i], i, t)) return false; } return true; }; }
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 5.1 (ECMA-262) The definition of 'Array.prototype.every' in that specification. |
Standard | Initial definition. Implemented in JavaScript 1.6 |
ECMAScript 6 (ECMA-262) The definition of 'Array.prototype.every' in that specification. |
Release Candidate |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | 1.5 (1.8) | 9 | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | 1.0 (1.8) | (Yes) | (Yes) | (Yes) |