@@ -4,8 +4,7 @@ import baseGet from './baseGet.js'
4
4
import compareMultiple from './compareMultiple.js'
5
5
import isArrayLike from '../isArrayLike.js'
6
6
7
- // As existing identity function is in ../test/utils.js, so defining it here, it can be moved to utils
8
- const identity = value => value ;
7
+ const identity = ( value ) => value
9
8
10
9
/**
11
10
* The base implementation of `orderBy` without param guards.
@@ -17,20 +16,31 @@ const identity = value => value;
17
16
* @returns {Array } Returns the new sorted array.
18
17
*/
19
18
function baseOrderBy ( collection , iteratees , orders ) {
19
+ if ( iteratees . length ) {
20
+ iteratees = iteratees . map ( ( iteratee ) => {
21
+ if ( Array . isArray ( iteratee ) ) {
22
+ return ( value ) => baseGet ( value , iteratee )
23
+ }
24
+
25
+ return iteratee
26
+ } )
27
+ } else {
28
+ iteratees = [ identity ]
29
+ }
30
+
20
31
let criteriaIndex = - 1
21
32
let eachIndex = - 1
22
- iteratees = iteratees . length ? iteratees . map ( ( iteratee ) => {
23
- if ( Array . isArray ( iteratee ) ) {
24
- return ( value ) => baseGet ( value , iteratee )
25
- }
26
- return iteratee
27
- } ) : [ identity ]
28
33
29
34
const result = isArrayLike ( collection ) ? new Array ( collection . length ) : [ ]
30
35
31
36
baseEach ( collection , ( value ) => {
32
37
const criteria = iteratees . map ( ( iteratee ) => iteratee ( value ) )
33
- result [ ++ eachIndex ] = { 'criteria' : criteria , 'index' : ++ criteriaIndex , 'value' : value }
38
+
39
+ result [ ++ eachIndex ] = {
40
+ criteria,
41
+ index : ++ criteriaIndex ,
42
+ value
43
+ }
34
44
} )
35
45
36
46
return baseSortBy ( result , ( object , other ) => compareMultiple ( object , other , orders ) )
0 commit comments