Pretty Print JSON in Console 
copy   const  obj =  {      x:  1 ,  y:  2 ,      data:  {  test:  'xyz'  }    } ;    console.log ( JSON.stringify ( obj,  null ,  2 ) ) ;  Try it out… 
JSON.stringify has two more arguments that allow for pretty printing and processing of the object in question. The second argument is a “replacer” function and the third argument is for indentation. Read more details here. 
 
I am pretty sure I first learned this from this stack overflow post. 
I used this technique in yesterdays console hijacking post.
 
            
             
            console.log Hijack 
copy const  log =  console.log ; const  consoleUI =  document.body .appendChild (   document.createElement ( 'div' )  ) ; document.body .style .margin  =  0 ;  Object .assign ( consoleUI.style ,  {   position:  'fixed' ,    bottom:  0 ,    width:  '100%' ,    height:  '30%' ,    maxHeight:  '450px' ,    minHeight:  '200px' ,    background:  'rgb(68, 68, 81)' ,    overflow:  'scroll'  } ) ; function  consoleRow( str)  {   const  row =  document.createElement ( 'div' ) ;    consoleUI.prepend ( row) ;    row.innerText  =  str;    Object .assign ( row.style ,  {      padding:  '.5em' ,      fontFamily:  'sans-serif' ,      color:  'white' ,      borderBottom:  '1px solid rgba(255, 255, 255, .1)' ,      whiteSpace:  'pre-wrap'    } ) ;  }   console.log  =  ( ...args )  =>  {    const  formatted =  args.map ( val =>  {      return  typeof  val ===  'object'  ?         JSON.stringify ( val,  null ,  2 )  :  val;    } ) ;    consoleRow( formatted.join ( ' ' ) ) ;    log.apply ( console,  args) ;  } ;   // test it out   console.log ( 1 ,  2 ,  3 ,  4 ) ;  console.log ( new  Date ( ) ) ;    const  someObject =  {   test:  123 ,    testing:  {  x:  1 ,  y:  2 ,  z:  3  }  } ; console.log ( someObject) ;    console.log ( 3 ,  2 ,  1 ,  0 ) ;  Try it out… 
I’m thinking about adding a little fake console to the Snippet Zone Quick Editor – just whipped this up as a proof of concept – something like this should work…
 
            
             
            Distance Between Two Points (SVG) 
copy const  dist =  ( x1,  y1,  x2,  y2)  =>    Math .sqrt (      ( x1 -  x2)  **  2  +       ( y1 -  y2)  **  2 ) ;    const  el =  document.body .appendChild (   document.createElement ( 'div' )  ) ;   el.innerHTML  =  `   < svg style= "overflow:visible;" >      < circle id= "circA"  cx= "150"  cy= "100"  r= "50"  fill= "gray"  />      < circle id= "circB"  cx= "150"  cy= "200"  r= "50"  fill= "blue"  />      < text id= "text"  dy= "20"  dx= "20" > move mouse</ text>    </ svg>    < style>      body,  html,  svg {        width:  100 %;        height:  100 %;      }    </ style>  `;    function  touch( e)  {   const  touches =  e.touches ;    let  x,  y;    if  ( touches !=  null  &&  touches.length  >  0 )  {      x =  touches[ 0 ] .clientX ;      y =  touches[ 0 ] .clientY ;    }  else  {      x =  e.clientX ;      y =  e.clientY ;    }    return  {  x,  y } ;  }   const  hasTouch =  navigator.maxTouchPoints  >  0 ; const  move =  hasTouch ?  'touchmove'  :  'mousemove' ; document.addEventListener ( move,  e =>  {    const  {  x,  y }  =  touch( e) ;      // using global ids :D    circB.cx .baseVal .value  =  x;    circB.cy .baseVal .value  =  y;      const  distance =  dist(      circA.cx .baseVal .value ,       circA.cy .baseVal .value ,  x,  y   ) ;    text.innerHTML  =  'move mouse, distance: '  +  distance;      circA.r .baseVal .value  =  distance -  circB.r .baseVal .value ;  } ) ; Try it out… 
This snippet shows how to calculate the distance between two points. The dist function uses the pythagorean theorem:
copy const  dist =  ( x1,  y1,  x2,  y2)  =>    Math .sqrt (      ( x1 -  x2)  **  2  +       ( y1 -  y2)  **  2 ) ;   
            
             
            Combine Two or More Arrays 
copy const  numbers =  [ 1 ,  2 ,  3 ] ; const  letters =  [ 'a' ,  'b' ,  'c' ] ; const  symbols =  [ '!' ,  '@' ,  '#' ] ;   // use spread operator const  combined =  [ ...numbers ,  ...letters ,  ...symbols ] ; console.log ( 'first' ,  combined) ;    // older way const  combinedConcat =  numbers  .concat ( letters)    .concat ( symbols) ;    console.log ( 'second' ,  combinedConcat) ;  Try it out… 
If you click “Try it out” be sure to open your console.
 
            
             
            Creative Coding Auto-Painting 
copy Object .getOwnPropertyNames ( Math ) .map ( i =>  ( this [ i]  =  Math [ i] ) ) ; ( (   width =  innerWidth *  2 ,    height =  innerHeight *  2 ,    cnv =  document.body .appendChild (      Object .assign ( document.createElement ( 'canvas' ) ,  {        width,        height     } )    ) ,    c =  cnv.getContext ( '2d' ) ,    r =  ( n =  1 )  =>  Math .random ( )  *  n,    NUM =  50 ,    f =  ( )  =>  ( {      ax:  r( width) ,      ay:  r( height) ,      x:  0 ,      y:  0 ,      T:  r( 9 ) ,      R:  r( innerWidth *  0.8 )  +  40 ,      t:  r( 6 ) ,      C:  round( r( 255 ) ) ,      m:  r( 5 )  +  1    } ) ,    cs,    sn,    dx,    dy,    ns =  [ ...Array ( NUM) ] .map ( f)  )  =>  {   Object .assign ( cnv.style ,  {      transformOrigin:  '0 0' ,      transform:  'scale(.5)'    } )    Object .assign ( document.body .style ,  {      margin:  0 ,      padding:  0    } )      const  clear =  ( )  =>  {      c.fillStyle  =  '#666668'      c.fillRect ( 0 ,  0 ,  width,  height)      c.globalAlpha  =  0.5    }      onresize =  ( )  =>  {      width =  cnv.width  =  innerWidth *  2      height =  cnv.height  =  innerHeight *  2      clear( )    }      clear( )      setInterval( ( )  =>  {      for  ( i =  0 ;  i <  30 ;  i++ )  {        ns.map ( ( n,  i)  =>  {          with ( n)  {            x =  ax +  R *  cos( t)            y =  ay +  R *  sin( t)  *  pow( sin( t *  0.5 ) ,  m)            c.fillStyle  =  `rgba( ${ C} , ${ C} , ${ C} , .02) `           ; ( cs =  cos( T) ) ,  ( sn =  sin( T) ) ,  ( dx =  x -  ax) ,  ( dy =  y -  ay)            c.fillRect ( cs *  dx -  sn *  dy +  ax,  sn *  dx +  cs *  dy +  ay,  50 ,  50 )            t +=  0.1            R -=  0.01            if  ( R <  5 )  ns[ i]  =  f( )          }        } )      }    } ,  16 )  } ) ( ) Try it out… 
Speed coded semi-golfed canvas texture. Best if viewed in fullscreen.