Bliss.js предоставляет мощные и удобные методы для работы с массивами, которые позволяют выполнять операции фильтрации, трансформации, поиска и манипуляции элементами без необходимости использования громоздких циклов и стандартных функций JavaScript. Основной подход Bliss.js ориентирован на цепочки методов и функциональный стиль программирования, что повышает читаемость и компактность кода.
Bliss.js позволяет создавать массивы через обычные литералы JavaScript или использовать встроенные методы библиотеки для динамического формирования коллекций:
let arr = bliss.array([1, 2, 3, 4, 5]);
let dynamicArr = bliss.range(1, 10); // массив от 1 до 10
Метод bliss.range(start, end, step) автоматически
генерирует последовательности чисел с заданным шагом. Это удобно для
инициализации больших наборов данных без ручного перечисления
элементов.
Bliss.js расширяет стандартные методы массивов функциональными аналогами с улучшенной цепочкой вызовов:
Пример использования:
let numbers = bliss.array([10, 15, 20, 25, 30]);
let evenNumbers = numbers.filter(n => n % 2 === 0);
let firstOver20 = numbers.find(n => n > 20);
let hasFifteen = numbers.includes(15);
let allAboveZero = numbers.every(n => n > 0);
Особенность Bliss.js в том, что методы возвращают объект массива Bliss, что позволяет выстраивать цепочки операций без дополнительных промежуточных переменных:
let processed = bliss.array([1, 2, 3, 4, 5])
.filter(n => n % 2 === 1)
.map(n => n * 10)
.value(); // [10, 30, 50]
Метод .value() преобразует объект Bliss обратно в
обычный массив JavaScript.
Bliss.js поддерживает ряд методов для преобразования данных:
Пример применения:
let items = bliss.array([
{name: "Apple", price: 50},
{name: "Banana", price: 30},
{name: "Cherry", price: 20}
]);
let names = items.map(item => item.name).value(); // ["Apple", "Banana", "Cherry"]
let totalPrice = items.reduce((sum, item) => sum + item.price, 0); // 100
let sortedByPrice = items.sortBy("price").value();
Метод sortBy особенно удобен для работы с массивами
объектов, позволяя сортировать по ключу без необходимости писать сложные
функции сравнения.
Bliss.js упрощает обработку вложенных структур благодаря методам
flatMap и pluck:
let data = bliss.array([
{id: 1, tags: ["a", "b"]},
{id: 2, tags: ["b", "c"]}
]);
let allTags = data.flatMap(item => item.tags).value(); // ["a", "b", "b", "c"]
let uniqueTags = bliss.array(allTags).uniq().value(); // ["a", "b", "c"]
Метод uniq() удаляет дубликаты и поддерживает удобное
цепочное использование с другими функциями библиотеки.
Bliss.js предоставляет методы для добавления, удаления и замены элементов без использования стандартных циклов:
Примеры:
let arr = bliss.array([1, 2, 3]);
arr.push(4).unshift(0); // [0, 1, 2, 3, 4]
arr.removeAt(2); // [0, 1, 3, 4]
arr.updateAt(1, 10); // [0, 10, 3, 4]
Методы возвращают объект Bliss, что позволяет сразу выполнять следующие операции без промежуточного присваивания.
Bliss.js имеет встроенные методы для работы с коллекциями:
Пример:
let people = bliss.array([
{name: "Alice", role: "admin"},
{name: "Bob", role: "user"},
{name: "Charlie", role: "admin"}
]);
let grouped = people.groupBy("role").value();
/*
{
admin: [{name: "Alice", ...}, {name: "Charlie", ...}],
user: [{name: "Bob", ...}]
}
*/
let numbers = bliss.range(1, 10);
let chunks = numbers.chunk(3).value(); // [[1,2,3],[4,5,6],[7,8,9],[10]]
Метод groupBy позволяет легко агрегировать данные для
отчетов и аналитики, а chunk — для организации данных в
порционные блоки.
Пример использования tap:
bliss.array([1,2,3])
.tap(arr => console.log("Before map:", arr))
.map(n => n * 2)
.tap(arr => console.log("After map:", arr))
.value();
Метод tap полезен для отладки и промежуточных проверок,
не нарушая цепочку вызовов.
Bliss.js значительно упрощает работу с массивами, объединяя функциональные возможности стандартного JavaScript с удобными цепочками вызовов и методами для сложной обработки данных. Использование этой библиотеки делает код читаемым, компактным и легко расширяемым, особенно при работе с коллекциями объектов и многомерными массивами.