28 lines
562 B
JavaScript
28 lines
562 B
JavaScript
|
'use strict';
|
||
|
|
||
|
var _require = require('../helpers/is'),
|
||
|
isFunction = _require.isFunction;
|
||
|
|
||
|
module.exports = function last(fn, defaultValue) {
|
||
|
var items = this.items;
|
||
|
|
||
|
|
||
|
if (isFunction(fn)) {
|
||
|
items = this.filter(fn).all();
|
||
|
}
|
||
|
|
||
|
if (Array.isArray(items) && !items.length || !Object.keys(items).length) {
|
||
|
if (isFunction(defaultValue)) {
|
||
|
return defaultValue();
|
||
|
}
|
||
|
|
||
|
return defaultValue;
|
||
|
}
|
||
|
|
||
|
if (Array.isArray(items)) {
|
||
|
return items[items.length - 1];
|
||
|
}
|
||
|
var keys = Object.keys(items);
|
||
|
|
||
|
return items[keys[keys.length - 1]];
|
||
|
};
|