UNPKG

foop

Version:

interfaces that describe their intentions.

46 lines (44 loc) 3.44 kB
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=