Skip to content

Commit e4ec2b9

Browse files
committed
feat(groupBy): accept any ArrayLike as argument
1 parent 215fbb1 commit e4ec2b9

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

index.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,12 @@ export function reverseFn(): typeof reverse {
3838
return reverse;
3939
}
4040

41-
export function groupBy<TElement>(array: ReadonlyArray<TElement>,
41+
export function groupBy<TElement>(array: ArrayLike<TElement>,
4242
keyOf: (element: TElement) => string): Dictionary<TElement[]> {
4343
const grouped = {} as Dictionary<TElement[]>;
4444

45-
for (const element of array) {
45+
for (let i = 0; i < array.length; ++i) {
46+
const element = array[i];
4647
const key = keyOf(element);
4748
const group = grouped[key] || [];
4849
group.push(element);
@@ -52,7 +53,7 @@ export function groupBy<TElement>(array: ReadonlyArray<TElement>,
5253
return grouped;
5354
}
5455

55-
export function groupByFn<T>(keyOf: (element: T) => string): (array: ReadonlyArray<T>) => Dictionary<T[]> {
56+
export function groupByFn<T>(keyOf: (element: T) => string): (array: ArrayLike<T>) => Dictionary<T[]> {
5657
return array => groupBy(array, keyOf);
5758
}
5859

tslint.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
{
2-
"extends": "@softwareventures/tslint-rules"
2+
"extends": "@softwareventures/tslint-rules",
3+
"rules": {
4+
"prefer-for-of": false
5+
}
36
}

0 commit comments

Comments
 (0)