File tree 2 files changed +34
-15
lines changed
2 files changed +34
-15
lines changed Original file line number Diff line number Diff line change 290
290
} ,
291
291
292
292
sort : function ( list , key ) {
293
+ var isArray = TypeUtil . isArray ;
294
+ var isObject = TypeUtil . isObject ;
295
+ var isNumber = TypeUtil . isNumber ;
296
+ var isString = TypeUtil . isString ;
297
+
293
298
var compare = function ( a , b ) {
294
299
var aVal ;
295
300
var bVal ;
296
301
297
- if ( TypeUtil . isString ( key ) ) {
302
+ if ( isObject ( a ) && isObject ( b ) && isString ( key ) ) {
303
+ // comparing objects
298
304
aVal = key in a ? a [ key ] : a ;
299
305
bVal = key in b ? b [ key ] : b ;
306
+ } else if ( isArray ( a ) && isArray ( b ) && isNumber ( key ) ) {
307
+ // comparing arrays
308
+ var index = key ;
309
+ aVal = index >= 0 && index < a . length ? a [ index ] : a ;
310
+ bVal = index >= 0 && index < b . length ? b [ index ] : b ;
300
311
} else {
301
312
aVal = a ;
302
313
bVal = b ;
303
314
}
304
315
305
- var aValIsNum = TypeUtil . isNumber ( aVal ) ;
306
- var bValIsNum = TypeUtil . isNumber ( bVal ) ;
316
+ var aValIsNum = isNumber ( aVal ) ;
317
+ var bValIsNum = isNumber ( bVal ) ;
307
318
308
319
if ( aValIsNum && bValIsNum ) {
309
320
return aVal <= bVal ? - 1 : 1 ;
Original file line number Diff line number Diff line change 178
178
return e ;
179
179
} ,
180
180
sort : function ( n , t ) {
181
- return n . sort ( function ( n , r ) {
182
- var e , i ;
183
- S . isString ( t )
184
- ? ( ( e = t in n ? n [ t ] : n ) , ( i = t in r ? r [ t ] : r ) )
185
- : ( ( e = n ) , ( i = r ) ) ;
186
- var a = S . isNumber ( e ) ,
187
- o = S . isNumber ( i ) ;
188
- if ( a && o ) return e <= i ? - 1 : 1 ;
189
- if ( a ) return - 1 ;
190
- if ( o ) return 1 ;
191
- var u = [ e , i ] ;
192
- return u . sort ( ) , u . indexOf ( e ) <= u . indexOf ( i ) ? - 1 : 1 ;
181
+ var r = S . isArray ,
182
+ e = S . isObject ,
183
+ i = S . isNumber ,
184
+ a = S . isString ;
185
+ return n . sort ( function ( n , o ) {
186
+ var u , c ;
187
+ if ( e ( n ) && e ( o ) && a ( t ) )
188
+ ( u = t in n ? n [ t ] : n ) , ( c = t in o ? o [ t ] : o ) ;
189
+ else if ( r ( n ) && r ( o ) && i ( t ) ) {
190
+ var s = t ;
191
+ ( u = s >= 0 && s < n . length ? n [ s ] : n ) ,
192
+ ( c = s >= 0 && s < o . length ? o [ s ] : o ) ;
193
+ } else ( u = n ) , ( c = o ) ;
194
+ var f = i ( u ) ,
195
+ l = i ( c ) ;
196
+ if ( f && l ) return u <= c ? - 1 : 1 ;
197
+ if ( f ) return - 1 ;
198
+ if ( l ) return 1 ;
199
+ var g = [ u , c ] ;
200
+ return g . sort ( ) , g . indexOf ( u ) <= g . indexOf ( c ) ? - 1 : 1 ;
193
201
} ) ;
194
202
} ,
195
203
sum : function ( t , r ) {
You can’t perform that action at this time.
0 commit comments