Skip to content

Commit 6ab2209

Browse files
committed
feat(groupAdjacentByEquality): implement groupAdjacentByEquality functions
1 parent 9242fbd commit 6ab2209

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

index.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,4 +538,31 @@ export function groupByOrderWithHashFn<T>(
538538
hash: (element: T, index: number) => string
539539
): (array: ArrayLike<T>) => T[][] {
540540
return array => groupByOrderWithHash(array, compare, hash);
541+
}
542+
543+
export function groupAdjacentByEquality<T>(array: ArrayLike<T>, equal: (a: T, b: T) => boolean): T[][] {
544+
if (array.length === 0) {
545+
return [];
546+
}
547+
548+
let element: T = array[0];
549+
let group: T[] = [element];
550+
const result: T[][] = [group];
551+
552+
for (let i = 1; i < array.length; ++i) {
553+
const prev = element;
554+
element = array[i];
555+
if (equal(prev, element)) {
556+
group.push(element);
557+
} else {
558+
group = [element];
559+
result.push(group);
560+
}
561+
}
562+
563+
return result;
564+
}
565+
566+
export function groupAdjacentByEqualityFn<T>(equal: (a: T, b: T) => boolean): (array: ArrayLike<T>) => T[][] {
567+
return array => groupAdjacentByEquality(array, equal);
541568
}

0 commit comments

Comments
 (0)