Skip to main content
Module

x/ramda/sortWith.js

:ram: Practical functional Javascript
Very Popular
Go to Latest
File
import _curry2 from './internal/_curry2';

/** * 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. * @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;