Repository URL to install this package:
|
Version:
6.0.4 ▾
|
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var keys_1 = require("../util/keys");
var lengthMinusOne_1 = require("../util/lengthMinusOne");
var is_1 = require("../is");
/**
* @desc get last index in a list
* @since 5.0.0-beta.2
* @memberOf fp
*
* @name lastIndex
* @alias findLastIndex
*
* @param {Array | Object | string | *} x item to find the last index of
* @return {number|string|*} last index, usually number/string
*
* @tests fp/last
*
* @TODO could have support for map...
* @NOTE works for strings too eh
* @extends deps/util/keysObjOrArray
*
* {@link https://github.com/jashkenas/underscore/blob/master/underscore.js#L667 underscore-last-index}
* {@link https://github.com/lodash/lodash/tree/npm-packages/lodash.findlastindex lodash-find-last-index}
* {@link https://github.com/ramda/ramda/tree/v0.24.1/src/findLastIndex.js ramda-find-last-index}
* @see {@link ramda-find-last-index}
* @see {@link lodash-find-last-index}
* @see {@link underscore-last-index}
* @see deps/fp/last
*
* @example
*
* lastIndex([0, 'one']) //=> 1
* lastIndex({one: 1, two: 2}) //=> 'two'
*
*/
function lastIndex(x) {
if (is_1.isString(x) || is_1.isArray(x))
return lengthMinusOne_1.default(x);
else if (is_1.isObj(x))
return keys_1.default(x).pop();
else
return -1;
// @TODO if (isString(x)) return x.lastIndexOf()
// else if (isObj(x)) return toNumber(lengthMinusOne(keys(x)))
// else if (isObj(x)) return lastIndex(ObjectKeys(x))
// const xKeys = isArray(x) ? x : keys(x)
// return xKeys[lengthMinusOne(xKeys)]
// const last = xKeys[xKeys.length - 1]
// return last
}
exports.default = lastIndex;
//# sourceMappingURL=lastIndex.js.map