From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../reference/global_objects/array/some/index.html | 206 +++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 files/uk/web/javascript/reference/global_objects/array/some/index.html (limited to 'files/uk/web/javascript/reference/global_objects/array/some') diff --git a/files/uk/web/javascript/reference/global_objects/array/some/index.html b/files/uk/web/javascript/reference/global_objects/array/some/index.html new file mode 100644 index 0000000000..934df016e0 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/array/some/index.html @@ -0,0 +1,206 @@ +--- +title: Array.prototype.some() +slug: Web/JavaScript/Reference/Global_Objects/Array/some +tags: + - ECMAScript5 + - Довідка + - Масив + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Array/some +--- +
{{JSRef}}
+ +

Метод some() з'ясовує, чи містить масив хоч один елемент, для якого зазначена функція callback повертає true (або значення, що зводиться до true). Повертає значення типу Boolean.

+ +
+

Зауваження: для порожнього масиву цей метод незмінно повертає false.

+
+ +
{{EmbedInteractiveExample("pages/js/array-some.html")}}
+ + + +

Синтаксис

+ +
arr.some(callback(element[, index[, array]])[, thisArg])
+ +

Параметри

+ +
+
callback
+
Функція, яка перевіряє елементи. Приймає три аргументи: +
+
element
+
Значення чергового елемента масиву.
+
index {{Optional_inline}}
+
Індекс чергового елемента в масиві.
+
array{{Optional_inline}}
+
Масив, до якого застосовано some().
+
+
+
thisArg{{Optional_inline}}
+
Значення, що використовується як this коли викликається callback.
+
+ +

Повертає

+ +

true, якщо функція повертає {{Glossary("truthy", "істинне")}} значення принаймні для одного з елементів масива. Інакше false.

+ +

Опис

+ +

Метод some() викликає функцію callback для кожного елемента в масиві один за одним, доки не знайде такий, для якого callback повертає істинне значення (значення, яке стає true внаслідок перетворення на Boolean). Щойно такий елемент знайдено, some() негайно повертає true, не перевіряючи решту елементів. Якщо таких елементів не знайдено, метод some() повертає false.

+ +

Зауважте, що callback викликається лише для індексів масиву, яким надано значення. Тож індекси без встановлених значень, а також видалені елементи будуть знехтувані.

+ +

Функція callback викликається з трьома аргументами: значення елемента, індекс елемента і об'єкт масиву, для якого викликано метод some().

+ +

Якщо для some() визначено параметр thisArg, його буде використано як значення this для функції callback. В іншому випадку, буде використано значення {{jsxref("undefined")}}. Зрештою, значення this для функції callback буде визначено відповідно до загальних правил.

+ +

Метод some() не змінює масив, для якого його викликано.

+ +

Межі індексів елементів, які буде перевірено, встановлюються перед найпершим викликом callback. Тож всі елементи, додані в кінець масиву вже під час виконання some(), будуть знехтувані. Якщо значення котрогось елемента буде змінено зсередини callback, наступний виклик callback (якщо такий буде) це врахує. Видалені елементи перевірено не буде.

+ +

Приклади

+ +

Перевірка елементів масива

+ +

В цьому прикладі виклик some() перевіряє, чи містить масив числа більші від 10:

+ +
function isBiggerThan10(element, index, array) {
+  return element > 10;
+}
+
+[2, 5, 8, 1, 4].some(isBiggerThan10);   // вертає false
+[12, 5, 8, 1, 4].some(isBiggerThan10);  // вертає true
+
+ +

Перевірка елементів масива стрілковою функцією

+ +

Те саме, що і в попередньому прикладі, але із синтаксисом стрілкової функції:

+ +
[2, 5, 8, 1, 4].some(x => x > 10);   // вертає false
+[12, 5, 8, 1, 4].some(x => x > 10);  // вертає true
+
+ +

Перевірка наявності певного значення в масиві

+ +

Щоб відтворити поведінку метода {{jsxref("Array.prototype.includes()", "includes()")}}, функція повертає true, щойно знаходить шукане значення в масиві:

+ +
var fruits = ['яблуко', 'груша', 'персик', 'банан'];
+
+function contains(array, value) {
+  return array.some(function(v) {
+    return value === v;
+  });
+}
+
+contains(fruits, 'вишня');  // вертає false
+contains(fruits, 'банан');  // вертає true
+ +

Перевірка наявності певного значення в масиві стрілковою функцією

+ +
var fruits = ['яблуко', 'груша', 'персик', 'банан'];
+
+function contains(array, value) {
+  return array.some(v => value === v);
+}
+
+contains(fruits, 'вишня');  // вертає false
+contains(fruits, 'банан');  // вертає true
+ +

Зведення всякого значення до Boolean

+ +
var TRUTHY_VALUES = [true, 'true', 1];
+
+function getBoolean(value) {
+  'use strict';
+
+  if (typeof value === 'string') {
+    value = value.toLowerCase().trim();
+  }
+
+  return TRUTHY_VALUES.some(function(t) {
+    return t === value;
+  });
+}
+
+getBoolean(false);    // вертає false
+getBoolean('false');  // вертає false
+getBoolean(1);        // вертає true
+getBoolean('true');   // вертає true
+ +

Запасний варіант (поліфіл)

+ +

Цей метод було стандартизовано 5-им випуском ECMA-262. Для рушіїв, що не мають підтримки цього метода, стане в пригоді наведене нижче рішення. Цей алгоритм аналогічно відповідає вимогам 5-го випуску ECMA-262 за умови, що {{jsxref("Object")}} і {{jsxref("TypeError")}} не було змінено, а виклик callback.call() відповідає очікуваному {{jsxref("Function.prototype.call()")}}:

+ +
// Production steps of ECMA-262, Edition 5, 15.4.4.17
+// Reference: http://es5.github.io/#x15.4.4.17
+if (!Array.prototype.some) {
+  Array.prototype.some = function(fun, thisArg) {
+    'use strict';
+
+    if (this == null) {
+      throw new TypeError('Array.prototype.some called on null or undefined');
+    }
+
+    if (typeof fun !== 'function') {
+      throw new TypeError();
+    }
+
+    var t = Object(this);
+    var len = t.length >>> 0;
+
+    for (var i = 0; i < len; i++) {
+      if (i in t && fun.call(thisArg, t[i], i, t)) {
+        return true;
+      }
+    }
+
+    return false;
+  };
+}
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецифікаціяСтатусКоментар
{{SpecName('ES5.1', '#sec-15.4.4.17', 'Array.prototype.some')}}{{Spec2('ES5.1')}}Початкова виознака. Запроваджено у JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.some', 'Array.prototype.some')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.some', 'Array.prototype.some')}}{{Spec2('ESDraft')}}
+ +

Підтримка веб-переглядачами

+ +
+ + +

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

+
+ +

Див. також

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