function stableSort(array, compareFn) {
    // Using `.bind(compareFn)` on the wrapped anonymous function improves
    // performance by avoiding the function call setup. We don't use an arrow
    // function here as it binds `this` to the `stableSort` context rather than
    // the `compareFn` context, which wouldn't give us the performance increase.
    return array.map(function (a, index) {
      return [index, a];
    }).sort(function (a, b) {
      return this(a[1], b[1]) || a[0] - b[0];
    }.bind(compareFn)).map(function (e) {
      return e[1];
    });
  }
/*
   * Consitant and stable sort function across JavsaScript platforms
   *
   * Inconsistent sorts can cause SSR problems between client and server
   * such as in <b-table> if sortBy is applied to the data on server side render.
   * Chrome and V8 native sorts are inconsistent/unstable
   *
   * This function uses native sort with fallback to index compare when the a and b
   * compare returns 0
   *
   * Algorithm bsaed on:
   * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645
   *
   * @param {array} array to sort
   * @param {function} sortcompare function
   * @return {array}
   */
Consitant and stable sort function across JavsaScript platforms
Inconsistent sorts can cause SSR problems between client and server
such as in  if sortBy is applied to the data on server side render.
Chrome and V8 native sorts are inconsistent/unstable

This function uses native sort with fallback to index compare when the a and b
compare returns 0



@param {array} array to sort
@param {function} sortcompare function
@return {array}
Consitant and stable sort function across JavsaScript platforms Inconsistent sorts can cause SSR problems between client and server such as in if sortBy is applied to the data on server side render . Chrome and V8 native sorts are inconsistent / unstable This function uses native sort with fallback to index compare when the a and b compare returns 0 @param { array } array to sort @param { function } sortcompare function @return { array }
function stableSort(array, compareFn) {
    return array.map(function (a, index) {
      return [index, a];
    }).sort(function (a, b) {
      return this(a[1], b[1]) || a[0] - b[0];
    }.bind(compareFn)).map(function (e) {
      return e[1];
    });
  }
function stableSort ( array , compareFn ) { return array . map ( function ( a , index ) { return [ index , a ] ; } ) . sort ( function ( a , b ) { return this ( a [ 1 ] , b [ 1 ] ) || a [ 0 ] - b [ 0 ] ; } . bind ( compareFn ) ) . map ( function ( e ) { return e [ 1 ] ; } ) ; }
Consitant and stable sort function across JavsaScript platforms
 Inconsistent sorts can cause SSR problems between client and server
 such as in <b-table> if sortBy is applied to the data on server side render.
Consitant and stable sort function across JavsaScript platforms Inconsistent sorts can cause SSR problems between client and server such as in <b - table > if sortBy is applied to the data on server side render .
// Using `.bind(compareFn)` on the wrapped anonymous function improves // performance by avoiding the function call setup. We don't use an arrow // function here as it binds `this` to the `stableSort` context rather than // the `compareFn` context, which wouldn't give us the performance increase.