foop
Version:
interfaces that describe their intentions.
46 lines (44 loc) • 3.44 kB
JavaScript
var isIndexable = require('../is/indexable')
var firstIndex = require('./firstIndex')
/**
* Returns the first element of the given list or string. In some libraries
* this function is named `first`.
*
* @memberOf fp
* @since v5.0.0
*
* @extends deps/fp/firstIndex
* @param {*} x Array or Object find the last key of
* @return {*} value at last index
*
* @name first
* @alias head
*
* @tests fp/first
*
* @func
* @category List
* @sig [a] -> a | Undefined
* @sig String -> String
*
* {@link https://github.com/ramda/ramda/blob/master/src/head.js ramda-head}
* {@link https://github.com/lodash/lodash/blob/master/head.js lodash-head}
* {@link https://github.com/jashkenas/underscore/blob/master/underscore.js#L494 underscore-first}
* @see {@link underscore-head}
* @see {@link lodash-head}
* @see {@link ramda-head}
* @see R.init, R.head, R.tail
*
* @TODO could just pipe nth
*
* @example
*
* first(['fi', 'fo', 'fum']); //=> 'fi'
* first([]); //=> undefined
*
* first('abc'); //=> 'a'
* first(''); //=> ''
*
*/
module.exports = function (x) { return (isIndexable(x) ? x[firstIndex(x)] : undefined); }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyc3QuanMiLCJzb3VyY2VzIjpbImZpcnN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGlzSW5kZXhhYmxlID0gcmVxdWlyZSgnLi4vaXMvaW5kZXhhYmxlJylcbmNvbnN0IGZpcnN0SW5kZXggPSByZXF1aXJlKCcuL2ZpcnN0SW5kZXgnKVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIGxpc3Qgb3Igc3RyaW5nLiBJbiBzb21lIGxpYnJhcmllc1xuICogdGhpcyBmdW5jdGlvbiBpcyBuYW1lZCBgZmlyc3RgLlxuICpcbiAqIEBtZW1iZXJPZiBmcFxuICogQHNpbmNlIHY1LjAuMFxuICpcbiAqIEBleHRlbmRzIGRlcHMvZnAvZmlyc3RJbmRleFxuICogQHBhcmFtIHsqfSB4IEFycmF5IG9yIE9iamVjdCBmaW5kIHRoZSBsYXN0IGtleSBvZlxuICogQHJldHVybiB7Kn0gdmFsdWUgYXQgbGFzdCBpbmRleFxuICpcbiAqIEBuYW1lIGZpcnN0XG4gKiBAYWxpYXMgaGVhZFxuICpcbiAqIEB0ZXN0cyBmcC9maXJzdFxuICpcbiAqIEBmdW5jXG4gKiBAY2F0ZWdvcnkgTGlzdFxuICogQHNpZyBbYV0gLT4gYSB8IFVuZGVmaW5lZFxuICogQHNpZyBTdHJpbmcgLT4gU3RyaW5nXG4gKlxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9yYW1kYS9yYW1kYS9ibG9iL21hc3Rlci9zcmMvaGVhZC5qcyByYW1kYS1oZWFkfVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvbWFzdGVyL2hlYWQuanMgbG9kYXNoLWhlYWR9XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL2Jsb2IvbWFzdGVyL3VuZGVyc2NvcmUuanMjTDQ5NCB1bmRlcnNjb3JlLWZpcnN0fVxuICogQHNlZSB7QGxpbmsgdW5kZXJzY29yZS1oZWFkfVxuICogQHNlZSB7QGxpbmsgbG9kYXNoLWhlYWR9XG4gKiBAc2VlIHtAbGluayByYW1kYS1oZWFkfVxuICogQHNlZSBSLmluaXQsIFIuaGVhZCwgUi50YWlsXG4gKlxuICogQFRPRE8gY291bGQganVzdCBwaXBlIG50aFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICAgICBmaXJzdChbJ2ZpJywgJ2ZvJywgJ2Z1bSddKTsgLy89PiAnZmknXG4gKiAgICAgIGZpcnN0KFtdKTsgICAgICAgICAgICAgICAgICAvLz0+IHVuZGVmaW5lZFxuICpcbiAqICAgICAgZmlyc3QoJ2FiYycpOyAgICAgICAgICAgICAgIC8vPT4gJ2EnXG4gKiAgICAgIGZpcnN0KCcnKTsgICAgICAgICAgICAgICAgICAvLz0+ICcnXG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IHggPT4gKGlzSW5kZXhhYmxlKHgpID8geFtmaXJzdEluZGV4KHgpXSA6IHVuZGVmaW5lZClcbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0FBQzlDQSxHQUFLLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBDMUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxVQUFBLENBQUMsQ0FBQSxDQUFDLEFBQUcsU0FBQSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUE7In0=