Приємне знайомство - zencoder

Щоб оцінити корисність і зручність роботи з цією бібліотекою, потрібно на практиці розглянути приклади роботи методів underscore.js. Тому нижче будуть представлені саме приклади.

У документі викликається через символ підкреслення -

(Звідси і назва бібліотеки). До речі, розширений варіант underscore - lodash також обігрує цей варіант самоназви (lodash == low dash).

underscore.js - робота з колекціями

Список методів для роботи з колекціями досить великий - Collection Functions. Розглянемо деякі з них.

Метод _.each ()

Служить для перебору всіх елементів колекції і застосування функції до кожного з елементів. Код нижче пробіжить по всіх елементах колекції a1 і виведе кожен з цих елементів в консоль браузера:

Більш складний приклад застосування методу

Вже тут починається демонстрація привабливості underscore.js.

Код нижче є ні чим іншим, як подвійним циклом - один цикл вкладений в інший цикл. Але з використанням underscore.js код стає буквально витонченим - всього один рядок!

Коротко - є масив a2, елементи якого - об'єкти з властивостями. Зовнішній цикл пробігається за елементами масиву.

Для кожного елемента масиву запускається внутрішній цикл, який пробігає по властивостям елемента масиву (адже елемент масиву - це об'єкт в даному випадку).

Метод _.map ()

отримує на вхід масив і повертає новий масив, створений шляхом перетворення елементів оригінального масиву \ колекції.

Наприклад, код нижче бере масив a3, викликає кожен з елементів цього масиву, примножує цей елемент на 3 та поміщає в новий масив a4, як елемент цього масиву:

Точно також цей метод працює з колекцією. Наприклад, збільшимо значення тільки одного певного ключа колекції a2. Повернеться новий масив a5 зі зміненим значенням ключа

"... underscore \ lodash - методи map () і filter () - у них є відмінність між собою? в оф. документації йдеться, що метод map () повертає масив перетворених елементів; метод filter () повертає масив елементів, що задовольняють умові. але ж я можу (?) підставити в обидва методи будь-яку (?) фунцию?
і метод filter () буде повертати масив перетворених елементів? або я щось не розумію? ... "

"... Теоретично - так, вони ідентичні. Але у них різне призначення - якщо хочеться фільтрувати, то використовуй filter, хочеш перетворювати - map. Можу припустити (я не знаю точно), що з міркувань швидкодії filter передає в функцію об'єкт за посиланням, а не його копію, тому зміни об'єкта працюватимуть, але це означає, що ти віддаєшся у владу реалізації методу. І ніхто не гарантує, що в один день underscore / lodash не почне передавати копію об'єкта. В цьому випадку твій код може поламатися. Тому я б використовував функції за призначенням. ... "

Метод _.pluck ()

Метод служить для повернення масиву, що містить значення ключа, зазначеного в умови.

Синтаксис методу до надзвичайності простий - вказуємо ім'я оброблюваної колекції і назви ключа, значення якого хочемо отримати:

Назва методу смішне - привіт, Кін-дза-дза !. В офіційній документації йдеться, що це самий часто використовуваний метод бібліотеки underscore.

underscore.js - робота з масивами

Розглянуті вище кілька методів underscore.js можуть однаково добре працювати як з масивами, так і з колекціями.

Однак, крім цих методів, у underscore.js є методи виключно для роботи з масивами. За цим посиланням можна ознайомитися зі списком таких методів - Underscore.js - Arrays.

Метод _.first ()

Цей метод повертає перший елемент масиву - все просто і зрозуміло: