UNPKG

ut2

Version:

一个现代 JavaScript 实用工具库。[点击查看在线文档]。

27 lines (23 loc) 1.06 kB
'use strict'; var identity = require('./identity.js'); var createIteratee = require('./internals/createIteratee.js'); var compare = require('./internals/compare.js'); var isArray = require('./isArray.js'); var forEach = require('./forEach.js'); var native = require('./internals/native.js'); var orderBy = function (collection, iteratees, orders) { var result = []; iteratees = (isArray(iteratees) ? iteratees : iteratees !== native.nativeUndefined ? [iteratees] : [identity]); orders = (isArray(orders) ? orders : orders !== native.nativeUndefined ? [orders] : []); var index = -1; forEach(collection, function (item, key, arr) { var criteria = iteratees.map(function (iteratee) { return createIteratee(iteratee)(item, key, arr); }); result.push({ criteria: criteria, index: ++index, value: item }); }); return result.sort(function (a, b) { return compare.compareMultiple(a, b, orders); }).map(function (item) { return item.value; }); }; module.exports = orderBy;