ts-data-forge
    Preparing search index...
    • Sorts an array by a mapped value.

      Type Parameters

      • const Ar extends readonly unknown[]

      Parameters

      • array: Ar
      • comparatorValueMapper: (value: Ar[number]) => number
      • Optionalcomparator: (x: number, y: number) => number

      Returns IsFixedLengthList<Ar> extends true
          ? MakeTupleImpl<Ar[number], `${Ar["length"]}`, []>
          : Ar extends readonly [unknown, unknown]
              ? readonly [Ar<Ar>[number], Ar<Ar>[number]]
              : readonly Ar[number][]

      const projects = [
      { name: 'compiler', issues: 7 },
      { name: 'docs', issues: 2 },
      { name: 'ui', issues: 5 },
      ] as const;

      const byIssueCount = Arr.toSortedBy(projects, (project) => project.issues);
      const byIssueCountDescending = Arr.toSortedBy(
      projects,
      (project) => project.issues,
      (left, right) => right - left,
      );

      const expectedByIssues = [
      { name: 'docs', issues: 2 },
      { name: 'ui', issues: 5 },
      { name: 'compiler', issues: 7 },
      ] as const;

      const expectedByIssueCountDescending = [
      { name: 'compiler', issues: 7 },
      { name: 'ui', issues: 5 },
      { name: 'docs', issues: 2 },
      ] as const;

      assert.deepStrictEqual(byIssueCount, expectedByIssues);
      assert.deepStrictEqual(byIssueCountDescending, expectedByIssueCountDescending);
    • Sorts an array by a mapped value.

      Type Parameters

      • const Ar extends readonly unknown[]
      • const V

      Parameters

      • array: Ar
      • comparatorValueMapper: (value: Ar[number]) => V
      • comparator: (x: V, y: V) => number

      Returns IsFixedLengthList<Ar> extends true
          ? MakeTupleImpl<Ar[number], `${Ar["length"]}`, []>
          : Ar extends readonly [unknown, unknown]
              ? readonly [Ar<Ar>[number], Ar<Ar>[number]]
              : readonly Ar[number][]

      const projects = [
      { name: 'compiler', issues: 7 },
      { name: 'docs', issues: 2 },
      { name: 'ui', issues: 5 },
      ] as const;

      const byIssueCount = Arr.toSortedBy(projects, (project) => project.issues);
      const byIssueCountDescending = Arr.toSortedBy(
      projects,
      (project) => project.issues,
      (left, right) => right - left,
      );

      const expectedByIssues = [
      { name: 'docs', issues: 2 },
      { name: 'ui', issues: 5 },
      { name: 'compiler', issues: 7 },
      ] as const;

      const expectedByIssueCountDescending = [
      { name: 'compiler', issues: 7 },
      { name: 'ui', issues: 5 },
      { name: 'docs', issues: 2 },
      ] as const;

      assert.deepStrictEqual(byIssueCount, expectedByIssues);
      assert.deepStrictEqual(byIssueCountDescending, expectedByIssueCountDescending);