Object.groupBy()

Object.groupBy() - групує елементи об'єкта.

Синтаксис:

Object.groupBy(items, callbackFn);

Параметри:

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

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

Опис:

groupBy() статичний метод об'єкта Object який групує елементи спископодібного об'єкта. Функція callbackFn повина певертати рядок до якої групи віднести даний елемент. Повертається об'єкт який містить відгруповані елементи.

Метод Object.groupBy() входить у специфікацію ES2024.

Приклад:

const people = [ { name: "Oleksandr", gender: "male", age: 28 }, { name: "Maria", gender: "female", age: 24 }, { name: "Ivan", gender: "male", age: 35 }, { name: "Olena", gender: "female", age: 30 }, { name: "Kateryna", gender: "female", age: 29 } ]; let groupPeople=Object.groupBy(people, (person)=>person.gender); alert(JSON.stringify(groupPeople)); var mas=[ {name:'Opel Astra G', fuel:'diesel', v:2}, {name:'Fiat Panda', fuel:'petrol', v:1.2}, {name:'BMW X5', fuel:'petrol', v:4.4}, {name:'Renault Trafic', fuel:'diesel', v:1.6} ]; var arr=Object.groupBy(mas, function(a){return a.fuel=='diesel'?'diesel':'petrol';}); /* arr={ "diesel":[ {"name":"Opel Astra G","fuel":"diesel","v":2}, {"name":"Renault Trafic","fuel":"diesel","v":1.6} ], "petrol":[ {"name":"Fiat Panda","fuel":"petrol","v":1.2}, {"name":"BMW X5","fuel":"petrol","v":4.4} ] } */ console.log(arr); Приклад групування об'єкту на три групи: cheap, medium, expensive: const products = [ { name: "Яблуко", price: 25.5 }, { name: "Банан", price: 32.0 }, { name: "Груша", price: 28.0 }, { name: "Апельсин", price: 45.0 }, { name: "Ківі", price: 60.0 }, { name: "Виноград", price: 80.0 }, { name: "Манго", price: 95.0 }, { name: "Ананас", price: 120.0 }, { name: "Полуниця", price: 150.0 }, { name: "Черешня", price: 200.0 } ]; const group=Object.groupBy(products, function(a){ switch(true){ case a.price<30: return 'cheap'; break; case a.price<=90: return 'medium'; break; case a.price>90: return 'expensive'; break; } }); console.log(group);