![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/ts.corals.io/frontend/node_modules/bootstrap-vue/src/utils/ |
/* * Consistent and stable sort function across JavaScript 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 based on: * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645 * * @param {array} array to sort * @param {function} sort compare function * @return {array} */ export const 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((a, index) => [index, a]) .sort( function(a, b) { return this(a[1], b[1]) || a[0] - b[0] }.bind(compareFn) ) .map(e => e[1]) }