File tree Expand file tree Collapse file tree 1 file changed +27
-0
lines changed
Expand file tree Collapse file tree 1 file changed +27
-0
lines changed Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments