Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
chain-able-deps / dist / fp / lastIndex.js
Size: Mime:
"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