|
|
- '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);
- };
|