File tree Expand file tree Collapse file tree 1 file changed +21
-0
lines changed
Expand file tree Collapse file tree 1 file changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -405,6 +405,27 @@ export function groupFn<T>(compare: Comparator<T>): (array: ArrayLike<T>) => T[]
405405 return array => group ( array , compare ) ;
406406}
407407
408+ export function groupByEquality < T > ( array : ArrayLike < T > , equal : ( a : T , b : T ) => boolean ) : T [ ] [ ] {
409+ const result : T [ ] [ ] = [ ] ;
410+
411+ outer: for ( let i = 0 ; i < array . length ; ++ i ) {
412+ for ( let j = 0 ; j < result . length ; ++ j ) {
413+ if ( equal ( result [ j ] [ 0 ] , array [ i ] ) ) {
414+ result [ j ] . push ( array [ i ] ) ;
415+ continue outer;
416+ }
417+ }
418+
419+ result . push ( [ array [ i ] ] ) ;
420+ }
421+
422+ return result ;
423+ }
424+
425+ export function groupByEqualityFn < T > ( equal : ( a : T , b : T ) => boolean ) : ( array : ArrayLike < T > ) => T [ ] [ ] {
426+ return array => groupByEquality ( array , equal ) ;
427+ }
428+
408429export function groupByHash < T > ( array : ArrayLike < T > , hash : ( element : T , index : number ) => string ) : T [ ] [ ] {
409430 const groups : Dictionary < T [ ] > = Object . create ( null ) ;
410431 const result : T [ ] [ ] = [ ] ;
You can’t perform that action at this time.
0 commit comments