// Loaded from https://deno.land/x/ramda@v0.27.2/source/sortWith.js import _curry2 from './internal/_curry2.js'; /** * Sorts a list according to a list of comparators. * * @func * @memberOf R * @since v0.23.0 * @category Relation * @sig [(a, a) -> Number] -> [a] -> [a] * @param {Array} functions A list of comparator functions. * @param {Array} list The list to sort. * @return {Array} A new list sorted according to the comarator functions. * @see R.ascend, R.descend * @example * * const alice = { * name: 'alice', * age: 40 * }; * const bob = { * name: 'bob', * age: 30 * }; * const clara = { * name: 'clara', * age: 40 * }; * const people = [clara, bob, alice]; * const ageNameSort = R.sortWith([ * R.descend(R.prop('age')), * R.ascend(R.prop('name')) * ]); * ageNameSort(people); //=> [alice, clara, bob] */ var sortWith = _curry2(function sortWith(fns, list) { return Array.prototype.slice.call(list, 0).sort(function(a, b) { var result = 0; var i = 0; while (result === 0 && i < fns.length) { result = fns[i](a, b); i += 1; } return result; }); }); export default sortWith;