@@ -906,7 +906,7 @@ function formatMap(ctx, value, recurseTimes, keys) {
906906
907907function formatWeakSet ( ctx , value , recurseTimes , keys ) {
908908 const maxArrayLength = Math . max ( ctx . maxArrayLength , 0 ) ;
909- const entries = previewEntries ( value ) . slice ( 0 , maxArrayLength + 1 ) ;
909+ const [ entries ] = previewEntries ( value ) . slice ( 0 , maxArrayLength + 1 ) ;
910910 const maxLength = Math . min ( maxArrayLength , entries . length ) ;
911911 let output = new Array ( maxLength ) ;
912912 for ( var i = 0 ; i < maxLength ; ++ i )
@@ -923,14 +923,16 @@ function formatWeakSet(ctx, value, recurseTimes, keys) {
923923
924924function formatWeakMap ( ctx , value , recurseTimes , keys ) {
925925 const maxArrayLength = Math . max ( ctx . maxArrayLength , 0 ) ;
926- const entries = previewEntries ( value ) . slice ( 0 , maxArrayLength + 1 ) ;
927- const remainder = entries . length > maxArrayLength ;
928- const len = entries . length - ( remainder ? 1 : 0 ) ;
926+ const [ entries ] = previewEntries ( value ) . slice ( 0 , ( maxArrayLength + 1 ) * 2 ) ;
927+ // Entries exist as [key1, val1, key2, val2, ...]
928+ const remainder = entries . length / 2 > maxArrayLength ;
929+ const len = entries . length / 2 - ( remainder ? 1 : 0 ) ;
929930 const maxLength = Math . min ( maxArrayLength , len ) ;
930931 let output = new Array ( maxLength ) ;
931- for ( var i = 0 ; i < len ; i ++ ) {
932- output [ i ] = `${ formatValue ( ctx , entries [ i ] [ 0 ] , recurseTimes ) } => ` +
933- formatValue ( ctx , entries [ i ] [ 1 ] , recurseTimes ) ;
932+ for ( var i = 0 ; i < maxLength ; i ++ ) {
933+ const pos = i * 2 ;
934+ output [ i ] = `${ formatValue ( ctx , entries [ pos ] , recurseTimes ) } => ` +
935+ formatValue ( ctx , entries [ pos + 1 ] , recurseTimes ) ;
934936 }
935937 // Sort all entries to have a halfway reliable output (if more entries than
936938 // retrieved ones exist, we can not reliably return the same output).
@@ -942,9 +944,19 @@ function formatWeakMap(ctx, value, recurseTimes, keys) {
942944 return output ;
943945}
944946
947+ function zip2 ( list ) {
948+ const ret = Array ( list . length / 2 ) ;
949+ for ( let i = 0 ; i < ret . length ; ++ i )
950+ ret [ i ] = [ list [ 2 * i ] , list [ 2 * i + 1 ] ] ;
951+ return ret ;
952+ }
953+
945954function formatCollectionIterator ( ctx , value , recurseTimes , keys ) {
946955 const output = [ ] ;
947- for ( const entry of previewEntries ( value ) ) {
956+ let [ entries , isKeyValue ] = previewEntries ( value ) ;
957+ if ( isKeyValue )
958+ entries = zip2 ( entries ) ;
959+ for ( const entry of entries ) {
948960 if ( ctx . maxArrayLength === output . length ) {
949961 output . push ( '... more items' ) ;
950962 break ;
0 commit comments