A Concise Quick Sort
Before even thinking about performance, concision, etc., run JSLint or similar over these methods and fix the indentation, other whitespace, and bugs. As it is the lack of consistency and poor indentation makes it hard to read and hides things like a missing comma which is leading to implicit semicolon insertion:


        var randomIndex = Math.floor(Math.random() * len),
        pivot = arr.splice(randomIndex, 1),
        lesserHalf = arr.filter(el =&gt;el &lt;= pivot)
        biggerHalf = arr.filter((el)=&gt; el &gt; pivot)



These four lines also look buggy because pivot is an array and yet it's being compared to an element with &lt;= and &gt;.

        var randomIndex = Math.floor(Math.random() * len),
            pivot = arr.splice(randomIndex, 1)[0],
            lesserHalf = arr.filter(el =&gt; el &lt;= pivot),
            biggerHalf = arr.filter(el =&gt; el &gt; pivot);


is more consistent, more obviously correct, and fixes at least one bug.



Example 3 also looks buggy.


const quickSort = ([x = [], ...xs]) =&gt; {
  if (x.length === 0) return [];



How will this sort ["", "a", "b"]? Answer: it will return [].