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
thiscare 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) |