UNPKG

foop

Version:

interfaces that describe their intentions.

39 lines (34 loc) 3.32 kB
var ObjectKeys = require('../util/keys') var isArray = require('../is/array') var isString = require('../is/string') var isObj = require('../is/array') /** * @desc get first index in a list * @since 5.0.0-beta.2 * @version 5.0.0-beta.7 <- fixed silly position[0] giving wrong index in arr * @memberOf fp * * @param {Array | Object | string | *} x item to find the first index of * @return {*} first index, usually number/string * * @NOTE works for strings too eh * @extends deps/util/keysObjOrArray * @see deps/fp/first * * @example * * firstIndex([0, 'one']) //=> 0 * firstIndex({one: 1, two: 2}) //=> 'one' * */ function firstIndex(x) { // any string or array starts @ 0 if (isString(x) || isArray(x)) { return 0 } // otherwise, object is good, if no keys, use 0, not sure how best to-do // probably better if this always returned a number, firstKey, firstIndex... else if (isObj(x)) { return ObjectKeys(x)[0] || '0' } // any other value, 0 else { return 0 } } module.exports = firstIndex //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyc3RJbmRleC5qcyIsInNvdXJjZXMiOlsiZmlyc3RJbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vdXRpbC9rZXlzJylcbmNvbnN0IGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pcy9hcnJheScpXG5jb25zdCBpc1N0cmluZyA9IHJlcXVpcmUoJy4uL2lzL3N0cmluZycpXG5jb25zdCBpc09iaiA9IHJlcXVpcmUoJy4uL2lzL2FycmF5JylcblxuLyoqXG4gKiBAZGVzYyBnZXQgZmlyc3QgaW5kZXggaW4gYSBsaXN0XG4gKiBAc2luY2UgNS4wLjAtYmV0YS4yXG4gKiBAdmVyc2lvbiA1LjAuMC1iZXRhLjcgPC0gZml4ZWQgc2lsbHkgcG9zaXRpb25bMF0gZ2l2aW5nIHdyb25nIGluZGV4IGluIGFyclxuICogQG1lbWJlck9mIGZwXG4gKlxuICogQHBhcmFtICB7QXJyYXkgfCBPYmplY3QgfCBzdHJpbmcgfCAqfSB4IGl0ZW0gdG8gZmluZCB0aGUgZmlyc3QgaW5kZXggb2ZcbiAqIEByZXR1cm4geyp9IGZpcnN0IGluZGV4LCB1c3VhbGx5IG51bWJlci9zdHJpbmdcbiAqXG4gKiBATk9URSB3b3JrcyBmb3Igc3RyaW5ncyB0b28gZWhcbiAqIEBleHRlbmRzIGRlcHMvdXRpbC9rZXlzT2JqT3JBcnJheVxuICogQHNlZSBkZXBzL2ZwL2ZpcnN0XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgIGZpcnN0SW5kZXgoWzAsICdvbmUnXSkgLy89PiAwXG4gKiAgIGZpcnN0SW5kZXgoe29uZTogMSwgdHdvOiAyfSkgLy89PiAnb25lJ1xuICpcbiAqL1xuZnVuY3Rpb24gZmlyc3RJbmRleCh4KSB7XG4gIC8vIGFueSBzdHJpbmcgb3IgYXJyYXkgc3RhcnRzIEAgMFxuICBpZiAoaXNTdHJpbmcoeCkgfHwgaXNBcnJheSh4KSkgcmV0dXJuIDBcblxuICAvLyBvdGhlcndpc2UsIG9iamVjdCBpcyBnb29kLCBpZiBubyBrZXlzLCB1c2UgMCwgbm90IHN1cmUgaG93IGJlc3QgdG8tZG9cbiAgLy8gcHJvYmFibHkgYmV0dGVyIGlmIHRoaXMgYWx3YXlzIHJldHVybmVkIGEgbnVtYmVyLCBmaXJzdEtleSwgZmlyc3RJbmRleC4uLlxuICBlbHNlIGlmIChpc09iaih4KSkgcmV0dXJuIE9iamVjdEtleXMoeClbMF0gfHwgJzAnXG5cbiAgLy8gYW55IG90aGVyIHZhbHVlLCAwXG4gIGVsc2UgcmV0dXJuIDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmaXJzdEluZGV4XG4iXSwibmFtZXMiOlsiY29uc3QiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7QUFDMUNBLEdBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUN0Q0EsR0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO0FBQ3hDQSxHQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCcEMsU0FBUyxVQUFVLENBQUMsQ0FBQyxFQUFFOztFQUVyQixJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQSxPQUFPLENBQUMsRUFBQTs7OztPQUlsQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFBLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBQTs7O09BRzVDLEVBQUEsT0FBTyxDQUFDLEVBQUE7Q0FDZDs7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLFVBQVU7In0=