title: Join an array by commas and "and"
body: <p>I want to convert the array <code>['one', 'two', 'three', 'four']</code> into <code>one, two, three and four</code></p>
  
  <p>Note that the first items have a comma, and but there is the word <code>and</code> between the second-last one and the last one.</p>
  
  <p>The best solution I've come up with:</p>
  
  <pre><code>a.reduce( (res, v, i) =&gt; i === a.length - 2 ? res + v + ' and ' : res + v + ( i == a.length -1? '' : ', '), '' )
  </code></pre>
  
  <p>It's based on adding the commas at the <em>end</em> -- with the exception of the second-last one (<code>a.length - 2</code>) and with a way to avoid the last comma (<code>a.length - 2</code>).</p>
  
  <p>SURELY there must be a better, neater, more intelligent way to do this?</p>
  
  <p>It's a difficult topic to search on search engines because it contains the word "and"...</p>