@@ -121,14 +121,11 @@ export function gsd(data, options = {}) {
121121
122122 let lastMax = null ;
123123 let lastMin = null ;
124- let minddY = new Array ( yData . length - 2 ) ;
125- let intervalL = new Array ( yData . length ) ;
126- let intervalR = new Array ( yData . length ) ;
127- let broadMask = new Array ( yData . length - 2 ) ;
128- let minddYLen = 0 ;
129- let intervalLLen = 0 ;
130- let intervalRLen = 0 ;
131- let broadMaskLen = 0 ;
124+ let minddY = [ ] ;
125+ let intervalL = [ ] ;
126+ let intervalR = [ ] ;
127+ let broadMask = [ ] ;
128+
132129 // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum
133130 for ( let i = 1 ; i < yData . length - 1 ; ++ i ) {
134131 // filter based on derivativeThreshold
@@ -144,8 +141,8 @@ export function gsd(data, options = {}) {
144141 index : i ,
145142 } ;
146143 if ( dX > 0 && lastMax !== null ) {
147- intervalL [ intervalLLen ++ ] = lastMax ;
148- intervalR [ intervalRLen ++ ] = lastMin ;
144+ intervalL . push ( lastMax ) ;
145+ intervalR . push ( lastMin ) ;
149146 }
150147 }
151148
@@ -159,26 +156,21 @@ export function gsd(data, options = {}) {
159156 index : i ,
160157 } ;
161158 if ( dX < 0 && lastMin !== null ) {
162- intervalL [ intervalLLen ++ ] = lastMax ;
163- intervalR [ intervalRLen ++ ] = lastMin ;
159+ intervalL . push ( lastMax ) ;
160+ intervalR . push ( lastMin ) ;
164161 }
165162 }
166163 }
167164
168165 // Minimum in second derivative
169166 if ( ddY [ i ] < ddY [ i - 1 ] && ddY [ i ] < ddY [ i + 1 ] ) {
170167 // TODO should we change this to have 3 arrays ? Huge overhead creating arrays
171- minddY [ minddYLen ++ ] = i ; // ( [xData[i], yData[i], i] );
172- broadMask [ broadMaskLen ++ ] = Math . abs ( ddY [ i ] ) <= broadRatio * maxDdy ;
168+ minddY . push ( i ) ; // ( [xData[i], yData[i], i] );
169+ broadMask . push ( Math . abs ( ddY [ i ] ) <= broadRatio * maxDdy ) ;
173170 }
174171 }
175- minddY . length = minddYLen ;
176- intervalL . length = intervalLLen ;
177- intervalR . length = intervalRLen ;
178- broadMask . length = broadMaskLen ;
179172
180- let signals = new Array ( minddY . length ) ;
181- let signalsLen = 0 ;
173+ let signals = [ ] ;
182174 let lastK = - 1 ;
183175 let possible , frequency , distanceJ , minDistance , gettingCloser ;
184176 for ( let j = 0 ; j < minddY . length ; ++ j ) {
@@ -206,27 +198,27 @@ export function gsd(data, options = {}) {
206198
207199 if ( possible !== - 1 ) {
208200 if ( Math . abs ( yData [ minddY [ j ] ] ) > minMaxRatio * maxY ) {
209- signals [ signalsLen ++ ] = {
201+ signals . push ( {
210202 index : minddY [ j ] ,
211203 x : frequency ,
212204 y : ( yData [ minddY [ j ] ] + yCorrection . b ) / yCorrection . m ,
213205 width : Math . abs ( intervalR [ possible ] . x - intervalL [ possible ] . x ) , // widthCorrection
214206 soft : broadMask [ j ] ,
215- } ;
207+ } ) ;
216208
217- signals [ signalsLen - 1 ] . left = intervalL [ possible ] ;
218- signals [ signalsLen - 1 ] . right = intervalR [ possible ] ;
209+ signals [ signals . length - 1 ] . left = intervalL [ possible ] ;
210+ signals [ signals . length - 1 ] . right = intervalR [ possible ] ;
219211
220212 if ( heightFactor ) {
221213 let yLeft = yData [ intervalL [ possible ] . index ] ;
222214 let yRight = yData [ intervalR [ possible ] . index ] ;
223- signals [ signalsLen - 1 ] . height =
224- heightFactor * ( signals [ signalsLen - 1 ] . y - ( yLeft + yRight ) / 2 ) ;
215+ signals [ signals . length - 1 ] . height =
216+ heightFactor *
217+ ( signals [ signals . length - 1 ] . y - ( yLeft + yRight ) / 2 ) ;
225218 }
226219 }
227220 }
228221 }
229- signals . length = signalsLen ;
230222
231223 if ( realTopDetection ) {
232224 determineRealTop ( signals , xData , yData ) ;
0 commit comments