JS метод Array.some()
Опис
Метод some()
перевіряє, чи хоча б один елемент масиву задовольняє функцію-перевірку, і повертає true
або false
.
Приклад:
let numbers = [1, -2, 3, 4, -5];
let hasPositive = numbers.some(number => number > 0);
console.log(hasPositive); // true
У цьому прикладі метод some()
перевіряє, чи існує в масиві хоча б одне позитивне число. Результатом буде true
, оскільки у масиві є позитивні числа.
Метод some()
пропонує ітеративний підхід до обробки елементів масиву. Він працює, застосовуючи надану функцію callbackFn
до кожного елемента масиву до моменту, коли callbackFn
повертає істинне значення. Якщо хоч один елемент задовольняє умову, то some()
миттєво повертає true
і припиняє дію. В іншому випадку метод повертає false
. Метод some()
можна сприймати як логічний оператор "існує". Цікаво, що для порожнього масиву він завжди повертає false
.
Функція callbackFn
викликається тільки для тих індексів масиву, які мають присвоєні значення, тому порожні місця у розріджених масивах будуть проігноровані.
Незважаючи на те, що some()
сам по собі не змінює оригінальний масив, callbackFn
може це робити. Ось кілька важливих нюансів:
- Довжина масиву зберігається до першого виклику
callbackFn
. Тому елементи, додані після початку виконанняsome()
, не будуть враховані. - Зміни, які відбулися у вже перевірених елементах, не призведуть до їх повторного обходу.
- Якщо
callbackFn
модифікує ще не перевірений елемент, передане у функцію значення буде відповідати актуальному стану на момент його перевірки. Видалені елементи не враховуються.
Попередження: Рекомендується уникати одночасних змін масиву під час ітерації, так як це може ускладнити розуміння та налагодження коду.
Нотатка: | Метод |
Нотатка: | Метод |
Нотатка: | Метод |
Синтаксис
some(callbackFn)
some(callbackFn, thisArg)
Параметри
- *
callbackFn
Функція, яку слід виконати для кожного елемента у масиві. Вона повинна повертати істинне значення (truthy), щоб показати, що елемент проходить перевірку, та хибне значення (falsy) в іншому випадку.
Функція
callbackFn
викликається з наступними аргументами:element
: поточний елемент, який обробляється у масиві;index
: індекс поточного елемента, який обробляється у масиві;array
: масив, на якому було викликано методfindIndex()
.
thisArg
Значення, яке використовується як
this
під час виконанняcallbackFn
.
Return
bool
true
, якщо callback-функція (callbackFn
) повертає істинне значення (truthy) хоча б для одного елемента у масиві. В іншому випадку -false
.
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
1 |
1.5 |
3 |
9.5 |
12 |
Переглядач | ||||
---|---|---|---|---|
37 |
18 |
4 |
1 |
Переглядач | ||
---|---|---|
0.10.0 |
1.0 |
Приклади
Цей приклад демонструє, як метод 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
Перевірка наявності значення в масиві.
const fruits = ["apple", "banana", "mango", "guava"];
function checkAvailability(arr, val) {
return arr.some((arrVal) => val === arrVal);
}
checkAvailability(fruits, "kela"); // false
checkAvailability(fruits, "banana"); // true
Використання функції some()
на розріджених масивах. Функція some()
не виконує передану їй умову для пустих слотів.
console.log([1, , 3].some((x) => x === undefined)); // false
console.log([1, , 1].some((x) => x !== 1)); // false
console.log([1, undefined, 1].some((x) => x !== 1)); // true
Використання функції some()
на об'єктах, які не є масивами.
const arrayLike = {
length: 3,
0: "a",
1: "b",
2: "c",
3: 3, // ігнорується some(), оскільки length дорівнює 3
};
console.log(Array.prototype.some.call(arrayLike, (x) => typeof x === "number"));
// false