File tree Expand file tree Collapse file tree 5 files changed +57
-29
lines changed
Expand file tree Collapse file tree 5 files changed +57
-29
lines changed Original file line number Diff line number Diff line change @@ -353,17 +353,24 @@ function fastIsObj(v) {
353353 return v != null && typeof v == 'object' ;
354354}
355355
356- function copy ( o , _isObj ) {
357- _isObj = _isObj || isObj ;
358-
356+ function copy ( o , _isObj = isObj ) {
359357 let out ;
360358
361- if ( isArr ( o ) )
362- out = o . map ( v => copy ( v , _isObj ) ) ;
359+ if ( isArr ( o ) ) {
360+ let val = o . find ( v => v != null ) ;
361+
362+ if ( isArr ( val ) || _isObj ( val ) ) {
363+ out = Array ( o . length ) ;
364+ for ( let i = 0 ; i < o . length ; i ++ )
365+ out [ i ] = copy ( o [ i ] , _isObj ) ;
366+ }
367+ else
368+ out = o . slice ( ) ;
369+ }
363370 else if ( _isObj ( o ) ) {
364371 out = { } ;
365- for ( var k in o )
366- out [ k ] = copy ( o [ k ] , _isObj ) ;
372+ for ( let [ k , v ] of Object . entries ( o ) )
373+ out [ k ] = copy ( v , _isObj ) ;
367374 }
368375 else
369376 out = o ;
Original file line number Diff line number Diff line change @@ -351,17 +351,24 @@ function fastIsObj(v) {
351351 return v != null && typeof v == 'object' ;
352352}
353353
354- function copy ( o , _isObj ) {
355- _isObj = _isObj || isObj ;
356-
354+ function copy ( o , _isObj = isObj ) {
357355 let out ;
358356
359- if ( isArr ( o ) )
360- out = o . map ( v => copy ( v , _isObj ) ) ;
357+ if ( isArr ( o ) ) {
358+ let val = o . find ( v => v != null ) ;
359+
360+ if ( isArr ( val ) || _isObj ( val ) ) {
361+ out = Array ( o . length ) ;
362+ for ( let i = 0 ; i < o . length ; i ++ )
363+ out [ i ] = copy ( o [ i ] , _isObj ) ;
364+ }
365+ else
366+ out = o . slice ( ) ;
367+ }
361368 else if ( _isObj ( o ) ) {
362369 out = { } ;
363- for ( var k in o )
364- out [ k ] = copy ( o [ k ] , _isObj ) ;
370+ for ( let [ k , v ] of Object . entries ( o ) )
371+ out [ k ] = copy ( v , _isObj ) ;
365372 }
366373 else
367374 out = o ;
Original file line number Diff line number Diff line change @@ -354,17 +354,24 @@ var uPlot = (function () {
354354 return v != null && typeof v == 'object' ;
355355 }
356356
357- function copy ( o , _isObj ) {
358- _isObj = _isObj || isObj ;
359-
357+ function copy ( o , _isObj = isObj ) {
360358 let out ;
361359
362- if ( isArr ( o ) )
363- out = o . map ( v => copy ( v , _isObj ) ) ;
360+ if ( isArr ( o ) ) {
361+ let val = o . find ( v => v != null ) ;
362+
363+ if ( isArr ( val ) || _isObj ( val ) ) {
364+ out = Array ( o . length ) ;
365+ for ( let i = 0 ; i < o . length ; i ++ )
366+ out [ i ] = copy ( o [ i ] , _isObj ) ;
367+ }
368+ else
369+ out = o . slice ( ) ;
370+ }
364371 else if ( _isObj ( o ) ) {
365372 out = { } ;
366- for ( var k in o )
367- out [ k ] = copy ( o [ k ] , _isObj ) ;
373+ for ( let [ k , v ] of Object . entries ( o ) )
374+ out [ k ] = copy ( v , _isObj ) ;
368375 }
369376 else
370377 out = o ;
Original file line number Diff line number Diff line change @@ -342,17 +342,24 @@ export function fastIsObj(v) {
342342 return v != null && typeof v == 'object' ;
343343}
344344
345- export function copy ( o , _isObj ) {
346- _isObj = _isObj || isObj ;
347-
345+ export function copy ( o , _isObj = isObj ) {
348346 let out ;
349347
350- if ( isArr ( o ) )
351- out = o . map ( v => copy ( v , _isObj ) ) ;
348+ if ( isArr ( o ) ) {
349+ let val = o . find ( v => v != null ) ;
350+
351+ if ( isArr ( val ) || _isObj ( val ) ) {
352+ out = Array ( o . length ) ;
353+ for ( let i = 0 ; i < o . length ; i ++ )
354+ out [ i ] = copy ( o [ i ] , _isObj ) ;
355+ }
356+ else
357+ out = o . slice ( ) ;
358+ }
352359 else if ( _isObj ( o ) ) {
353360 out = { } ;
354- for ( var k in o )
355- out [ k ] = copy ( o [ k ] , _isObj ) ;
361+ for ( let [ k , v ] of Object . entries ( o ) )
362+ out [ k ] = copy ( v , _isObj ) ;
356363 }
357364 else
358365 out = o ;
You can’t perform that action at this time.
0 commit comments