ut2
Version:
一个现代 JavaScript 实用工具库。[点击查看在线文档]。
27 lines (23 loc) • 1.06 kB
JavaScript
;
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;