--- title: Array.prototype.every() slug: Web/JavaScript/Reference/Global_Objects/Array/every tags: - Array - ECMAScript6 - JavaScript - Масив - метод translation_of: Web/JavaScript/Reference/Global_Objects/Array/every ---
Метод every()
перевіряє, чи всі елементи масиву відповідають умові, що задана функцією, яка передається як аргумент. Повертає булеве значення.
function isBigEnough(element, index, array) { return element >= 10; } [12, 5, 8, 130, 44].every(isBigEnough); // false [12, 54, 18, 130, 44].every(isBigEnough); // true
arr.every(callback(element[, index[, array]])[, thisArg])
callback
index
{{Optional_inline}}array
{{Optional_inline}}every
.thisArg
{{Optional_inline}}this
при виконанні callback
.true
, якщо функція callback повернула {{Glossary("truthy", "правдиве")}} значення для кожного елементу масиву; інакше, false
.
Метод every
виконує функцію callback
один раз для кожного елементу масиву поки не знайдено хоча б один елемент, функція callback
якого повертає {{Glossary("falsy", "хибне")}} значення. Якщо такий елемент знайдено, метод every
одразу повертає false
. В іншому ж випадку, якщо функція callback
повернула {{Glossary("truthy", "правдиве")}} значення для усіх елементів, every
повертає true
. Функція callback
викликається тільки для тих індексів масиву, які мають присвоєні значення; вона не викликається для тих індексів, котрі були видалені або котрим ніколи не присвоювалися значення.
Функція callback
викликається з трьома аргументами: значення елементу, індекс елементу в масиві і масив по якому робиться перебір.
Якщо параметр thisArg
переданий в every
, то він буде використовуватися функцією callback
як значення this
, коли та буде викликана. В іншому випадку буде передано значення undefined
як її значення this
. Значення this
зрештою видиме для функції callback
і визначається відповідно до звичайних правил для визначення this яке видиме функцією.
Метод every
не змінює масив, на якому він був викликаний.
Діапазон елементів, які обробляються методом every()
встановлюється перед першим виконанням функції callback
. Елементи, які додаються в масив після того, як метод every()
був викликаний, не будуть обходитися функцією callback
. Якщо існуючі елементи масиву змінилися, то їхні значення, які передаються в функцію callback
будуть значеннями на момент обходу їх методом every()
; якщо існуючі елементи масиву видалили, то метод every()
обходити їх не буде.
Метод every
схожий за дією на математичний символ "для кожного ". Зокрема, для порожнього масиву він повертає true. (Всі елементи порожнього набору задовольняють будь-якому заданому стану.)
Даний приклад перевіряє чи всі елементи масиву більші ніж 10.
function isBigEnough(element, index, array) { return element >= 10; } [12, 5, 8, 130, 44].every(isBigEnough); // false [12, 54, 18, 130, 44].every(isBigEnough); // true
Стрілочні функції надають коротший синтаксис для такої ж самої перевірки.
[12, 5, 8, 130, 44].every(x => x >= 10); // false [12, 54, 18, 130, 44].every(x => x >= 10); // true
Метод every
був доданий до ECMA-262 стандарту у 5-ій версії; як такий він може бути не реалізований в усіх реалізаціях стандарту. Ви можете обійти цю проблему, вставивши наступний код на початку ваших скриптів, що дозволить використовувати метод every
у тих версіях, які не підтримують його початково. Цей алгоритм є саме тим, що зазначений у ECMA-262, 5-ій версії, за умови, що Object
і TypeError
мають свої первинні значення і що callbackfn.call
прирівнюється до первинного значення {{jsxref("Function.prototype.call")}}
if (!Array.prototype.every) { Array.prototype.every = function(callbackfn, thisArg) { 'use strict'; var T, k; if (this == null) { throw new TypeError('this дорівнює null або не визначений'); } // 1. Нехай O буде результатом виклику ToObject з передачею значення // this в якості аргумента. var O = Object(this); // 2. Нехай lenValue буде результатом виклику внутрішнього метода O // Get з аргументом "length". // 3. Нехай len буде результатом ToUint32(lenValue). var len = O.length >>> 0; // 4. Якщо IsCallable(callbackfn) повертає false, викинути виняток TypeError. if (typeof callbackfn !== 'function') { throw new TypeError(); } // 5. Якщо thisArg було передано, хай T буде thisArg; інакше хай T буде undefined. if (arguments.length > 1) { T = thisArg; } // 6. Нехай k дорівнює 0. k = 0; // 7. Повторювати, доки k < len while (k < len) { var kValue; // а. Нехай Pk буде ToString(k). // Це неявно для операндів LHS оператора in // б. Нехай kPresent буде результатом виклику внутрішнього метода // O HasProperty з аргументом Pk. // Цей крок можна поєднати з в // в. Якщо kPresent дорівнює true, тоді if (k in O) { // i. Нехай kValue буде результатом виклику внутрішнього метода // O Get з аргументом Pk. kValue = O[k]; // ii. Нехай testResult буде результатом виклику внутрішнього метода // callbackfn Call з T в якості значення this і списком аргументів, // який містить kValue, k, та O. var testResult = callbackfn.call(T, kValue, k, O); // iii. Якщо ToBoolean(testResult) дорівнює false, повернути false. if (!testResult) { return false; } } k++; } return true; }; }
Specification | Status | Comment |
---|---|---|
{{SpecName('ES5.1', '#sec-15.4.4.16', 'Array.prototype.every')}} | {{Spec2('ES5.1')}} | Початкове визначення. Реалізовано у JavaScript 1.6. |
{{SpecName('ES6', '#sec-array.prototype.every', 'Array.prototype.every')}} | {{Spec2('ES6')}} | |
{{SpecName('ESDraft', '#sec-array.prototype.every', 'Array.prototype.every')}} | {{Spec2('ESDraft')}} |
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("javascript.builtins.Array.every")}}