From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../global_objects/array/every/index.html | 195 +++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 files/uk/web/javascript/reference/global_objects/array/every/index.html (limited to 'files/uk/web/javascript/reference/global_objects/array/every') diff --git a/files/uk/web/javascript/reference/global_objects/array/every/index.html b/files/uk/web/javascript/reference/global_objects/array/every/index.html new file mode 100644 index 0000000000..4eb5b229f0 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/array/every/index.html @@ -0,0 +1,195 @@ +--- +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 +--- +
{{JSRef}}
+ +

Метод 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
+
Функція, яка перевіряє кожен елемент масиву. Приймає три аргументи: +
+
element
+
Поточний елемент, який обробляється в масиві.
+
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 схожий за дією на математичний символ "для кожного \forall \!\,". Зокрема, для порожнього масиву він повертає 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;
+  };
+}
+
+ +

Специфікації

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{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')}}
+ +

Сумісність з веб-переглядачами

+ + + +

{{Compat("javascript.builtins.Array.every")}}

+ +
+ +

Див. також

+ + -- cgit v1.2.3-54-g00ecf