ts-data-forge
    Preparing search index...
    • Groups elements by a key derived from each element.

      Type Parameters

      • const Ar extends readonly unknown[]
      • G extends Primitive

      Parameters

      • array: Ar
      • grouper: (value: Ar[number], index: ArrayIndex<Ar>) => G

      Returns IMap<G, readonly Ar[number][]>

      const animals = ['ant', 'bat', 'cat', 'dove'] as const;

      const groupedByLength = Arr.groupBy(animals, (animal) => animal.length);
      const groupedByFirstLetter = Arr.groupBy((animal: string) => animal[0])(
      animals,
      );

      assert.deepStrictEqual(
      groupedByLength.get(3),
      Optional.some(['ant', 'bat', 'cat'] as const),
      );
      assert.deepStrictEqual(
      groupedByLength.get(4),
      Optional.some(['dove'] as const),
      );
      assert.deepStrictEqual(groupedByLength.get(5), Optional.none);

      assert.deepStrictEqual(
      groupedByFirstLetter.get('a'),
      Optional.some(['ant'] as const),
      );
      assert.deepStrictEqual(
      groupedByFirstLetter.get('d'),
      Optional.some(['dove'] as const),
      );
    • Groups elements by a key derived from each element.

      Type Parameters

      • E
      • G extends Primitive

      Parameters

      • grouper: (value: E, index: Uint32) => G

      Returns (array: readonly E[]) => IMap<G, readonly E[]>

      const animals = ['ant', 'bat', 'cat', 'dove'] as const;

      const groupedByLength = Arr.groupBy(animals, (animal) => animal.length);
      const groupedByFirstLetter = Arr.groupBy((animal: string) => animal[0])(
      animals,
      );

      assert.deepStrictEqual(
      groupedByLength.get(3),
      Optional.some(['ant', 'bat', 'cat'] as const),
      );
      assert.deepStrictEqual(
      groupedByLength.get(4),
      Optional.some(['dove'] as const),
      );
      assert.deepStrictEqual(groupedByLength.get(5), Optional.none);

      assert.deepStrictEqual(
      groupedByFirstLetter.get('a'),
      Optional.some(['ant'] as const),
      );
      assert.deepStrictEqual(
      groupedByFirstLetter.get('d'),
      Optional.some(['dove'] as const),
      );