@newdash/newdash
Version:
javascript/typescript utility library
36 lines (35 loc) • 1.7 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const baseSortBy_1 = __importDefault(require("./baseSortBy"));
const baseUnary_1 = __importDefault(require("./baseUnary"));
const compareMultiple_1 = __importDefault(require("./compareMultiple"));
const arrayMap_1 = __importDefault(require("./arrayMap"));
const getIteratee_1 = __importDefault(require("./getIteratee"));
const baseMap_1 = __importDefault(require("./baseMap"));
const identity_1 = __importDefault(require("./identity"));
/**
* The base implementation of `orderBy` without param guards.
*
* @private
* @param {Array|Object} collection The collection to iterate over.
* @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
* @param {string[]} orders The sort orders of `iteratees`.
* @returns {Array} Returns the new sorted array.
*/
function baseOrderBy(collection, iteratees, orders) {
var index = -1;
iteratees = (0, arrayMap_1.default)(iteratees.length ? iteratees : [identity_1.default], (0, baseUnary_1.default)((0, getIteratee_1.default)()));
var result = (0, baseMap_1.default)(collection, function (value, key, collection) {
var criteria = (0, arrayMap_1.default)(iteratees, function (iteratee) {
return iteratee(value);
});
return { 'criteria': criteria, 'index': ++index, 'value': value };
});
return (0, baseSortBy_1.default)(result, function (object, other) {
return (0, compareMultiple_1.default)(object, other, orders);
});
}
exports.default = baseOrderBy;