JavaScript використовуємо filter()

callback
Доброго часу доби, шановний читачу!

Нещодавно мене попросили допомогти вирішити одне просте завдання.

Сьогодні я хочу розповісти, як вирішив це завдання двома методами. Спочатку, розглянемо простий спосіб рішення, та був більш вишуканий, під час якого ми розберемо одну цікаву функцію.

Даний одновимірний масив із 7 елементів. Необхідно порахувати кількість елементів, що знаходяться на непарних позиціях та мають непарне значення.

Подивимося, як можна вирішити таке завдання.

Варіант рішення №1

Перше, що мені спало на думку — створити циклfor, в якому поставити звичайні перевірки на непарність. Нижче наводжу приклад:

Ми створюємо масив, пробігаємо по циклу весь масив від0 доarray.length (7) та перевіряємо. Якщо позиція непарнаi%2 (поверне 1, якщо позиція 1, 3, 5…) і якщо значення елемента непарне (array[i]%2 поверне 1, якщо значення непарне) , Збільшуємо лічильник на одиницю. Наприкінці надрукуємо кількість елементівq.

Це один варіант рішення, тепер подивимося інший варіант.

Варіант рішення №2. Використання filter()

Другий варіант полягає в тому, що весь масив ми проганяємо за допомогою методуfilter() і перевіряємо, чи задовольняє значення елемента масиву нашій умові:

Дане рішення виглядає трохи елегантнішим і займаємо трохи менше місця 🙂

Тепер розберемо, як працює методfilter().

Як працює filter()

Функція повертає елементи масиву, що задовольняють умові, які вказані у функції зворотного дзвінка.

array1 - Обов'язковий. Об'єкт масиву.

callback - Обов'язковий. Методfilter викликає функціюcallback для кожного елементамасиву по одному разу.

thisArg - Необов'язковий. Об'єкт, на який буде посилатися ключове словоthis вcallback. Якщо аргументthisArg не заданий, то значенняthis використовуєтьсяundefined.

Значення, що повертаються

Після обробки повертається новий масив, що містить усі значення, для яких функція зворотного виклику повертає значенняtrue. Якщо функція повернула значенняfalse для всіх елементів масиву, то довжина нового отриманого після обробки масиву дорівнюватиме0.

Функція callback у методі filter()

Функція callback приймає до 3 параметрів. Усі параметри необов'язкові. Нижче наведено пояснення параметрів.

Ще приклад

Насамкінець наведу ще один маленький приклад.

Висновок

Дякую за увагу! Підписуйтесь на розсилку!