123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 'use strict';
- var nestedValue = require('../helpers/nestedValue');
- var _require = require('../helpers/is'),
- isFunction = _require.isFunction;
- module.exports = function sortBy(valueOrFunction) {
- var collection = [].concat(this.items);
- var getValue = function getValue(item) {
- if (isFunction(valueOrFunction)) {
- return valueOrFunction(item);
- }
- return nestedValue(item, valueOrFunction);
- };
- collection.sort(function (a, b) {
- var valueA = getValue(a);
- var valueB = getValue(b);
- if (valueA === null || valueA === undefined) {
- return 1;
- }
- if (valueB === null || valueB === undefined) {
- return -1;
- }
- if (valueA < valueB) {
- return -1;
- }
- if (valueA > valueB) {
- return 1;
- }
- return 0;
- });
- return new this.constructor(collection);
- };
|