Метод some()
з'ясовує, чи містить масив хоч один елемент, для якого зазначена функція callback
повертає true
(або значення, що зводиться до true
). Повертає значення типу Boolean.
Зауваження: для порожнього масиву цей метод незмінно повертає false
.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Першокод цього прикладу збережено у репозиторії GitHub. Якщо ви хочете долучитися до створення чи покращення таких прикладів, пропонуйте нам свої зміни до репозиторію https://github.com/mdn/interactive-examples.
Синтаксис
arr.some(callback(element[, index[, array]])[, thisArg])
Параметри
callback
- Функція, яка перевіряє елементи. Приймає три аргументи:
element
- Значення чергового елемента масиву.
index
Optional- Індекс чергового елемента в масиві.
array
Optional- Масив, до якого застосовано
some()
.
thisArg
Optional- Значення, що використовується як
this
коли викликаєтьсяcallback
.
Повертає
true
, якщо функція повертає істинне значення принаймні для одного з елементів масива. Інакше false
.
Опис
Метод some()
викликає функцію callback
для кожного елемента в масиві один за одним, доки не знайде такий, для якого callback
повертає істинне значення (значення, яке стає true
внаслідок перетворення на Boolean). Щойно такий елемент знайдено, some()
негайно повертає true
, не перевіряючи решту елементів. Якщо таких елементів не знайдено, метод some()
повертає false
.
Зауважте, що callback
викликається лише для індексів масиву, яким надано значення. Тож індекси без встановлених значень, а також видалені елементи будуть знехтувані.
Функція callback
викликається з трьома аргументами: значення елемента, індекс елемента і об'єкт масиву, для якого викликано метод some()
.
Якщо для some()
визначено параметр thisArg
, його буде використано як значення this
для функції callback
. В іншому випадку, буде використано значення 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
Перевірка наявності певного значення в масиві
Щоб відтворити поведінку метода 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 за умови, що Object
і TypeError
не було змінено, а виклик callback.call()
відповідає очікуваному 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;
};
}
Специфікації
Специфікація | Статус | Коментар |
---|---|---|
ECMAScript 5.1 (ECMA-262) The definition of 'Array.prototype.some' in that specification. |
Standard | Початкова виознака. Запроваджено у JavaScript 1.6. |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Array.prototype.some' in that specification. |
Standard | |
ECMAScript (ECMA-262) The definition of 'Array.prototype.some' in that specification. |
Living Standard |
Підтримка веб-переглядачами
BCD tables only load in the browser