Реализуйте аналог стандартного метода Map.groupBy.
Функция groupBy
принимает iterable
и callback
, с помощью которого можно понять, к какой группе относится очередной элемент iterable
.
Возвращает объект Map, где по ключам собраны элементы, относящиеся к одной группе.
Допустим, мы хотим сгруппировать слова по длине слова. Ключом мэпа будет являться число, длина строки, значением — массив элементов с такой длиной.
В качестве аргумента передается множество (Set) со словами и функция, превращающая слово в его длину.
const words = [ "the", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog" ]; const result = groupBy(words, a => a.length); // Map { // 3 => ["the", "fox", "the", "dog"], // 5 => ["quick", "brown", "jumps"], // 4 => ["over", "lazy"], // }
items
можно пройти с помощью цикла for-of.iterable
. Она возвращает значение (объект или примитив), определяющее группу элемента. Колбэк принимает два аргумента: