@@ -116,27 +116,18 @@ exports.calcTransform = function(gd, trace, opts) {
116
116
} ;
117
117
118
118
function getIndices ( opts , targetArray , d2c , len ) {
119
+ var sortedArray = new Array ( len ) ;
119
120
var indices = new Array ( len ) ;
121
+ var i ;
120
122
121
- var sortedArray = targetArray
122
- . slice ( 0 , len )
123
- . sort ( getSortFunc ( opts , d2c ) ) ;
124
-
125
- for ( var i = 0 ; i < len ; i ++ ) {
126
- var vTarget = targetArray [ i ] ;
127
-
128
- for ( var j = 0 ; j < len ; j ++ ) {
129
- var vSorted = sortedArray [ j ] ;
123
+ for ( i = 0 ; i < len ; i ++ ) {
124
+ sortedArray [ i ] = { v : targetArray [ i ] , i : i } ;
125
+ }
130
126
131
- if ( vTarget === vSorted ) {
132
- indices [ j ] = i ;
127
+ sortedArray . sort ( getSortFunc ( opts , d2c ) ) ;
133
128
134
- // clear sortedArray item to get correct
135
- // index of duplicate items (if any)
136
- sortedArray [ j ] = null ;
137
- break ;
138
- }
139
- }
129
+ for ( i = 0 ; i < len ; i ++ ) {
130
+ indices [ i ] = sortedArray [ i ] . i ;
140
131
}
141
132
142
133
return indices ;
@@ -145,8 +136,8 @@ function getIndices(opts, targetArray, d2c, len) {
145
136
function getSortFunc ( opts , d2c ) {
146
137
switch ( opts . order ) {
147
138
case 'ascending' :
148
- return function ( a , b ) { return d2c ( a ) - d2c ( b ) ; } ;
139
+ return function ( a , b ) { return d2c ( a . v ) - d2c ( b . v ) ; } ;
149
140
case 'descending' :
150
- return function ( a , b ) { return d2c ( b ) - d2c ( a ) ; } ;
141
+ return function ( a , b ) { return d2c ( b . v ) - d2c ( a . v ) ; } ;
151
142
}
152
143
}
0 commit comments