diff --git a/.markdown-doctest-setup.js b/.markdown-doctest-setup.js index d5fb204d27..fc16ea65ec 100644 --- a/.markdown-doctest-setup.js +++ b/.markdown-doctest-setup.js @@ -2,47 +2,10 @@ delete global['__core-js_shared__']; -var _ = require('./lodash.js'); - -function mockQuery() { - return { - 'on': function(eventName, callback) { - callback(); - } - }; -} - -mockQuery.each = _.each; +var _ = require('./lodash.js'), + globals = require('lodash-doc-globals'); module.exports = { 'babel': false, - 'globals': { - '_': _, - - // Example mocks. - 'asyncSave': _.noop, - 'addContactToList': _.noop, - 'batchLog': _.noop, - 'calculateLayout': _.noop, - 'createApplication': _.noop, - 'data': { 'user': 'mock' }, - 'mainText': '', - 'renewToken': _.noop, - 'sendMail': _.noop, - 'updatePosition': _.noop, - - // DOM mocks. - 'document': { 'body': { 'childNodes': [], 'nodeName': 'BODY' } }, - 'element': {}, - 'EventSource': _.noop, - 'jQuery': mockQuery, - 'window': {}, - - // Node.js mocks. - 'Buffer': Buffer, - 'fs': { 'writeFileSync': _.noop }, - 'path': require('path'), - 'process': process, - 'setImmediate': setImmediate - } + 'globals': _.assign({ '_': _ }, globals) }; diff --git a/.travis.yml b/.travis.yml index 476e2e202f..3a63ba3ad4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,10 @@ language: node_js sudo: false node_js: - "6" +cache: + directories: + - node_modules + - travis_phantomjs env: global: - BIN="node" ISTANBUL=false OPTION="" @@ -34,6 +38,12 @@ notifications: on_success: change on_failure: always before_install: + - "export PHANTOMJS_VERSION=2.1.1" + - "export PATH=$PWD/travis_phantomjs/phantomjs-$PHANTOMJS_VERSION-linux-x86_64/bin:$PATH" + - "if [ $(phantomjs --version) != $PHANTOMJS_VERSION ]; then rm -rf $PWD/travis_phantomjs; mkdir -p $PWD/travis_phantomjs; fi" + - "if [ $(phantomjs --version) != $PHANTOMJS_VERSION ]; then wget https://github.com/Medium/phantomjs/releases/download/v$PHANTOMJS_VERSION/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2 -O $PWD/travis_phantomjs/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2; fi" + - "if [ $(phantomjs --version) != $PHANTOMJS_VERSION ]; then tar -xvf $PWD/travis_phantomjs/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2 -C $PWD/travis_phantomjs; fi" + - "phantomjs --version" - "nvm use $TRAVIS_NODE_VERSION" - "npm set loglevel error" - "npm set progress false" @@ -55,6 +65,7 @@ before_install: node ./test/remove.js "$PTRN" ./lodash.js done fi + - "rm -rf ./node_modules/lodash-cli" - "git clone --depth=10 --branch=master git://github.com/lodash/lodash-cli ./node_modules/lodash-cli" - "mkdir -p ./node_modules/lodash-cli/node_modules/lodash && cd $_ && cp ../../../../lodash.js ./lodash.js && cp ../../../../package.json ./package.json" - "cd ../../ && npm i && cd ../../" @@ -64,7 +75,7 @@ script: - "[ $ISTANBUL == false ] || istanbul cover -x \"**/vendor/**\" --report lcovonly ./test/test.js -- ./lodash.js" - "[ $ISTANBUL == false ] || [ $TRAVIS_SECURE_ENV_VARS == false ] || (cat ./coverage/lcov.info | coveralls) || true" - "[ $ISTANBUL == false ] || [ $TRAVIS_SECURE_ENV_VARS == false ] || (cat ./coverage/coverage.json | codecov) || true" - + # Test in Node.js and PhantomJS. - "[ $ISTANBUL == true ] || node ./node_modules/lodash-cli/bin/lodash -o ./dist/lodash.js" - "[ $ISTANBUL == true ] || (node ./node_modules/lodash-cli/bin/lodash modularize exports=node -o ./ && node ./node_modules/lodash-cli/bin/lodash -d -o ./lodash.js)" diff --git a/README.md b/README.md index 6e5a1d2ddc..075f89d4ac 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# lodash v4.14.1 +# lodash v4.14.2 [Site](https://lodash.com/) | [Docs](https://lodash.com/docs) | @@ -20,11 +20,11 @@ $ lodash core -o ./dist/lodash.core.js ## Download -Lodash is released under the [MIT license](https://raw.githubusercontent.com/lodash/lodash/4.14.1/LICENSE) & supports [modern environments](#support).
+Lodash is released under the [MIT license](https://raw.githubusercontent.com/lodash/lodash/4.14.2/LICENSE) & supports [modern environments](#support).
Review the [build differences](https://github.com/lodash/lodash/wiki/build-differences) & pick one that’s right for you. - * [Core build](https://raw.githubusercontent.com/lodash/lodash/4.14.1/dist/lodash.core.js) ([~4 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.14.1/dist/lodash.core.min.js)) - * [Full build](https://raw.githubusercontent.com/lodash/lodash/4.14.1/dist/lodash.js) ([~22 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.14.1/dist/lodash.min.js)) + * [Core build](https://raw.githubusercontent.com/lodash/lodash/4.14.2/dist/lodash.core.js) ([~4 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.14.2/dist/lodash.core.min.js)) + * [Full build](https://raw.githubusercontent.com/lodash/lodash/4.14.2/dist/lodash.js) ([~22 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.14.2/dist/lodash.min.js)) * [CDN copies](https://www.jsdelivr.com/projects/lodash) ## Why Lodash? diff --git a/dist/lodash.core.js b/dist/lodash.core.js index 99f6f66fc7..f3b42c57ee 100644 --- a/dist/lodash.core.js +++ b/dist/lodash.core.js @@ -13,7 +13,7 @@ var undefined; /** Used as the semantic version number. */ - var VERSION = '4.14.1'; + var VERSION = '4.14.2'; /** Used as the `TypeError` message for "Functions" methods. */ var FUNC_ERROR_TEXT = 'Expected a function'; @@ -195,7 +195,7 @@ } /** - * Creates a function that invokes `func` with its first argument transformed. + * Creates a unary function that invokes `func` with its argument transformed. * * @private * @param {Function} func The function to wrap. @@ -222,7 +222,7 @@ /** * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) * of values. */ var objectToString = objectProto.toString; @@ -236,7 +236,7 @@ /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeIsFinite = root.isFinite, - nativeKeys = Object.keys, + nativeKeys = overArg(Object.keys, Object), nativeMax = Math.max; /*------------------------------------------------------------------------*/ @@ -402,7 +402,7 @@ /** * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. * * @private @@ -438,7 +438,7 @@ * @param {Function} func The function to delay. * @param {number} wait The number of milliseconds to delay invocation. * @param {Array} args The arguments to provide to `func`. - * @returns {number} Returns the timer id. + * @returns {number|Object} Returns the timer id or timeout object. */ function baseDelay(func, wait, args) { if (typeof func != 'function') { @@ -746,34 +746,6 @@ return (typeof func == 'object' ? baseMatches : baseProperty)(func); } - /** - * The base implementation of `_.keys` which doesn't skip the constructor - * property of prototypes or treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - var baseKeys = overArg(nativeKeys, Object); - - /** - * The base implementation of `_.keysIn` which doesn't skip the constructor - * property of prototypes or treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeysIn(object) { - object = object == null ? object : Object(object); - - var result = []; - for (var key in object) { - result.push(key); - } - return result; - } - /** * The base implementation of `_.lt` which doesn't coerce arguments. * @@ -813,7 +785,7 @@ * @returns {Function} Returns the new spec function. */ function baseMatches(source) { - var props = keys(source); + var props = nativeKeys(source); return function(object) { var length = props.length; if (object == null) { @@ -1116,7 +1088,7 @@ function createCtor(Ctor) { return function() { // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist // for more details. var args = arguments; var thisBinding = baseCreate(Ctor.prototype), @@ -1281,7 +1253,7 @@ case regexpTag: case stringTag: // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring // for more details. return object == (other + ''); @@ -1354,19 +1326,6 @@ return result; } - /** - * Gets the "length" property value of `object`. - * - * **Note:** This function is used to avoid a - * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects - * Safari on at least iOS 8.1-8.3 ARM64. - * - * @private - * @param {Object} object The object to query. - * @returns {*} Returns the "length" value. - */ - var getLength = baseProperty('length'); - /** * Checks if `value` is a flattenable `arguments` object or array. * @@ -1378,6 +1337,25 @@ return isArray(value) || isArguments(value); } + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + /** * Converts `value` to a string key if it's not a string or symbol. * @@ -1554,7 +1532,7 @@ /** * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. If `fromIndex` is negative, it's used as the * offset from the end of `array`. * @@ -1784,6 +1762,11 @@ * Iteration is stopped once `predicate` returns falsey. The predicate is * invoked with three arguments: (value, index|key, collection). * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * * @static * @memberOf _ * @since 0.1.0 @@ -2048,7 +2031,7 @@ if (collection == null) { return 0; } - collection = isArrayLike(collection) ? collection : keys(collection); + collection = isArrayLike(collection) ? collection : nativeKeys(collection); return collection.length; } @@ -2342,12 +2325,12 @@ if (!isObject(value)) { return value; } - return isArray(value) ? copyArray(value) : copyObject(value, keys(value)); + return isArray(value) ? copyArray(value) : copyObject(value, nativeKeys(value)); } /** * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * comparison between two values to determine if they are equivalent. * * @static @@ -2456,7 +2439,7 @@ * // => false */ function isArrayLike(value) { - return value != null && isLength(getLength(value)) && !isFunction(value); + return value != null && isLength(value.length) && !isFunction(value); } /** @@ -2568,7 +2551,7 @@ isFunction(value.splice) || isArguments(value))) { return !value.length; } - return !keys(value).length; + return !nativeKeys(value).length; } /** @@ -2587,8 +2570,7 @@ * @category Lang * @param {*} value The value to compare. * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, - * else `false`. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. * @example * * var object = { 'a': 1 }; @@ -2615,8 +2597,7 @@ * @since 0.1.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. * @example * * _.isFinite(3); @@ -2663,16 +2644,15 @@ /** * Checks if `value` is a valid array-like length. * - * **Note:** This function is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. * @example * * _.isLength(3); @@ -2694,7 +2674,7 @@ /** * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types) + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static @@ -2933,7 +2913,7 @@ * Converts `value` to an integer. * * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger). + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). * * @static * @memberOf _ @@ -3045,7 +3025,7 @@ * // => { 'a': 1, 'c': 3 } */ var assign = createAssigner(function(object, source) { - copyObject(source, keys(source), object); + copyObject(source, nativeKeys(source), object); }); /** @@ -3080,7 +3060,7 @@ * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } */ var assignIn = createAssigner(function(object, source) { - copyObject(source, keysIn(source), object); + copyObject(source, nativeKeysIn(source), object); }); /** @@ -3216,7 +3196,7 @@ * Creates an array of the own enumerable property names of `object`. * * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) * for more details. * * @static @@ -3240,7 +3220,7 @@ * _.keys('hi'); * // => ['0', '1'] */ - var keys = baseKeys; + var keys = nativeKeys; /** * Creates an array of the own and inherited enumerable property names of `object`. @@ -3265,7 +3245,7 @@ * _.keysIn(new Foo); * // => ['a', 'b', 'c'] (iteration order is not guaranteed) */ - var keysIn = baseKeysIn; + var keysIn = nativeKeysIn; /** * Creates an object composed of the picked `object` properties. @@ -3469,8 +3449,12 @@ * object and `source`, returning `true` if the given object has equivalent * property values, else `false`. * - * **Note:** The created function supports comparing the same values as - * `_.isEqual` is equivalent to `_.isMatch` with `source` partially applied. + * **Note:** The created function is equivalent to `_.isMatch` with `source` + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. * * @static * @memberOf _ diff --git a/dist/lodash.core.min.js b/dist/lodash.core.min.js index 3336ee8d3b..39b38ecc42 100644 --- a/dist/lodash.core.min.js +++ b/dist/lodash.core.min.js @@ -3,26 +3,26 @@ * lodash (Custom Build) /license | Underscore.js 1.8.3 underscorejs.org/LICENSE * Build: `lodash core -o ./dist/lodash.core.js` */ -;(function(){function n(n){n=null==n?n:Object(n);var t,r=[];for(t in n)r.push(t);return r}function t(n,t){return n.push.apply(n,t),n}function r(n){return function(t){return null==t?Z:t[n]}}function e(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function u(n,t){return m(t,function(t){return n[t]})}function o(n){return n instanceof i?n:new i(n)}function i(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function c(n,t,r,e){return n===Z||J(n,an[r])&&!ln.call(e,r)?t:n; -}function f(n){return V(n)?vn(n):{}}function a(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function");return setTimeout(function(){n.apply(Z,r)},t)}function l(n,t){var r=true;return jn(n,function(n,e,u){return r=!!t(n,e,u)}),r}function p(n,t,r){for(var e=-1,u=n.length;++et}function g(n,t,r,e,u){return n===t||(null==n||null==t||!V(n)&&!H(t)?n!==n&&t!==t:_(n,t,g,r,e,u))}function _(n,t,r,e,u,o){var i=kn(n),c=kn(t),f="[object Array]",a="[object Array]";i||(f=sn.call(n),f="[object Arguments]"==f?"[object Object]":f),c||(a=sn.call(t),a="[object Arguments]"==a?"[object Object]":a); -var l="[object Object]"==f&&true,c="[object Object]"==a&&true,a=f==a;o||(o=[]);var p=An(o,function(t){return t[0]==n}),s=An(o,function(n){return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=R(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=J(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 2&u||(i=l&&ln.call(n,"__wrapped__"), -f=c&&ln.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=D(n,t,r,e,u,o),o.pop(),r):(i=i?n.value():n,f=f?t.value():t,r=r(i,f,e,u,o),o.pop(),r)}function j(n){return typeof n=="function"?n:null==n?X:(typeof n=="object"?O:r)(n)}function d(n,t){return nt&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++ei))return false;for(var c=-1,f=true,a=1&u?[]:Z;++cr?_n(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++rarguments.length,jn)}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Nn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){ -return n===t||n!==n&&t!==t}function M(n){return H(n)&&P(n)&&ln.call(n,"callee")&&(!bn.call(n,"callee")||"[object Arguments]"==sn.call(n))}function P(n){var t;return(t=null!=n)&&(t=On(n),t=typeof t=="number"&&-1=t),t&&!U(n)}function U(n){return n=V(n)?sn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n}function V(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function H(n){return!!n&&typeof n=="object"}function K(n){return typeof n=="number"||H(n)&&"[object Number]"==sn.call(n); -}function L(n){return typeof n=="string"||!kn(n)&&H(n)&&"[object String]"==sn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return n?u(n,Dn(n)):[]}function X(n){return n}function Y(n,r,e){var u=Dn(r),o=b(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=n,n=this,o=b(r,Dn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(n);return jn(o,function(e){var u=r[e];n[e]=u,c&&(n.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=n(this.__wrapped__);return(e.__actions__=w(this.__actions__)).push({ -func:u,args:arguments,thisArg:n}),e.__chain__=r,e}return u.apply(n,t([this.value()],arguments))})}),n}var Z,nn=1/0,tn=/[&<>"'`]/g,rn=RegExp(tn.source),en=typeof self=="object"&&self&&self.Object===Object&&self,un=typeof global=="object"&&global&&global.Object===Object&&global||en||Function("return this")(),on=(en=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,cn=function(n){return function(t){return null==n?Z:n[t]}}({"&":"&", -"<":"<",">":">",'"':""","'":"'","`":"`"}),fn=Array.prototype,an=Object.prototype,ln=an.hasOwnProperty,pn=0,sn=an.toString,hn=un._,vn=Object.create,bn=an.propertyIsEnumerable,yn=un.isFinite,gn=Object.keys,_n=Math.max;i.prototype=f(o.prototype),i.prototype.constructor=i;var jn=function(n,t){return function(r,e){if(null==r)return r;if(!P(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++or&&(r=_n(e+r,0));n:{for(t=j(t),e=n.length,r+=-1;++re||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&rt}function y(n,t,r,e,u){return n===t||(null==n||null==t||!V(n)&&!H(t)?n!==n&&t!==t:g(n,t,y,r,e,u))}function g(n,t,r,e,u,o){var i=wn(n),c=wn(t),f="[object Array]",a="[object Array]";i||(f=sn.call(n),f="[object Arguments]"==f?"[object Object]":f),c||(a=sn.call(t),a="[object Arguments]"==a?"[object Object]":a);var l="[object Object]"==f&&true,c="[object Object]"==a&&true,a=f==a;o||(o=[]);var p=On(o,function(t){return t[0]==n; +}),s=On(o,function(n){return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=B(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=J(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 2&u||(i=l&&ln.call(n,"__wrapped__"),f=c&&ln.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=R(n,t,r,e,u,o),o.pop(),r):(i=i?n.value():n, +f=f?t.value():t,r=r(i,f,e,u,o),o.pop(),r)}function _(n){return typeof n=="function"?n:null==n?X:(typeof n=="object"?m:t)(n)}function j(n,t){return nt&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++ei))return false;for(var c=-1,f=true,a=1&u?[]:Z;++cr?_n(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++rarguments.length,jn)}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=kn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){return n===t||n!==n&&t!==t}function M(n){ +return H(n)&&P(n)&&ln.call(n,"callee")&&(!bn.call(n,"callee")||"[object Arguments]"==sn.call(n))}function P(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1=t),t&&!U(n)}function U(n){return n=V(n)?sn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n}function V(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function H(n){return!!n&&typeof n=="object"}function K(n){return typeof n=="number"||H(n)&&"[object Number]"==sn.call(n)} +function L(n){return typeof n=="string"||!wn(n)&&H(n)&&"[object String]"==sn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return n?e(n,Rn(n)):[]}function X(n){return n}function Y(t,r,e){var u=Rn(r),o=v(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=t,t=this,o=v(r,Rn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(t);return jn(o,function(e){var u=r[e];t[e]=u,c&&(t.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=t(this.__wrapped__);return(e.__actions__=E(this.__actions__)).push({ +func:u,args:arguments,thisArg:t}),e.__chain__=r,e}return u.apply(t,n([this.value()],arguments))})}),t}var Z,nn=1/0,tn=/[&<>"'`]/g,rn=RegExp(tn.source),en=typeof self=="object"&&self&&self.Object===Object&&self,un=typeof global=="object"&&global&&global.Object===Object&&global||en||Function("return this")(),on=(en=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,cn=function(n){return function(t){return null==n?Z:n[t]}}({"&":"&", +"<":"<",">":">",'"':""","'":"'","`":"`"}),fn=Array.prototype,an=Object.prototype,ln=an.hasOwnProperty,pn=0,sn=an.toString,hn=un._,vn=Object.create,bn=an.propertyIsEnumerable,yn=un.isFinite,gn=function(n,t){return function(r){return n(t(r))}}(Object.keys,Object),_n=Math.max;o.prototype=c(u.prototype),o.prototype.constructor=o;var jn=function(n,t){return function(r,e){if(null==r)return r;if(!P(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++or&&(r=_n(e+r,0));n:{for(t=_(t),e=n.length,r+=-1;++re||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&r1?q(e,r):e}function g(t,e,r){if(B.fixed&&(F||!u.skipFixed[t])){var n=u.methodSpread[t],i=n&&n.start;return void 0===i?M(e,r):N(e,i)}return e}function y(t,e,r){return B.rearg&&r>1&&(j||!u.skipRearg[t])?_(e,u.methodRearg[t]||u.aryRearg[r]):e}function m(t,e){e=V(e);for(var r=-1,n=e.length,i=n-1,a=z(Object(t)),o=a;null!=o&&++r1?q(e,r):e}function g(t,e,r){if(B.fixed&&(F||!u.skipFixed[t])){var n=u.methodSpread[t],i=n&&n.start;return void 0===i?M(e,r):N(e,i)}return e}function y(t,e,r){return B.rearg&&r>1&&(j||!u.skipRearg[t])?_(e,u.methodRearg[t]||u.aryRearg[r]):e}function m(t,e){e=U(e);for(var r=-1,n=e.length,i=n-1,a=z(Object(t)),o=a;null!=o&&++r2?r-2:1,a&&a<=r?n:i(n,r)):n}},mixin:function(t){return function(e){ -var r=this;if(!T(r))return t(r,Object(e));var n=[];return P(K(e),function(t){T(e[t])&&n.push([t,r.prototype[t]])}),t(r,Object(e)),P(n,function(t){var e=t[1];T(e)?r.prototype[t[0]]=e:delete r.prototype[t[0]]}),r}},rearg:function(t){return function(e,r){var n=r?r.length:0;return q(t(e,r),n)}},runInContext:function(e){return function(r){return l(t,e(r),d)}}};if(!k)return R(e,r);var H=r,J=[];return P(U,function(t){P(u.aryMethod[t],function(t){var e=H[u.remap[t]||t];e&&J.push([t,R(t,e)])})}),P(K(H),function(t){ -var e=H[t];if("function"==typeof e){for(var r=J.length;r--;)if(J[r][0]==t)return;e.convert=A(t,e),J.push([t,e])}}),P(J,function(t){H[t[0]]=t[1]}),H.convert=v,O&&(H.placeholder=L),P(K(H),function(t){P(u.realToAlias[t]||[],function(e){H[e]=H[t]})}),H}var u=r(2),p=u.mutate,f=r(3);t.exports=l},function(t,e){e.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head", -conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty", -pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},e.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"], -2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"], +keys:t.keys,rearg:t.rearg,spread:t.spread,toInteger:t.toInteger,toPath:t.toPath},M=w.ary,D=w.assign,z=w.clone,q=w.curry,P=w.forEach,S=w.isArray,T=w.isFunction,K=w.keys,_=w.rearg,N=w.spread,V=w.toInteger,U=w.toPath,G=K(u.aryMethod),H={castArray:function(t){return function(){var e=arguments[0];return S(e)?t(a(e)):t.apply(void 0,arguments)}},iteratee:function(t){return function(){var e=arguments[0],r=arguments[1],n=t(e,r),a=n.length;return B.cap&&"number"==typeof r?(r=r>2?r-2:1,a&&a<=r?n:i(n,r)):n}}, +mixin:function(t){return function(e){var r=this;if(!T(r))return t(r,Object(e));var n=[];return P(K(e),function(t){T(e[t])&&n.push([t,r.prototype[t]])}),t(r,Object(e)),P(n,function(t){var e=t[1];T(e)?r.prototype[t[0]]=e:delete r.prototype[t[0]]}),r}},nthArg:function(t){return function(e){var r=e<0?1:V(e)+1;return q(t(e),r)}},rearg:function(t){return function(e,r){var n=r?r.length:0;return q(t(e,r),n)}},runInContext:function(e){return function(r){return l(t,e(r),d)}}};if(!k)return R(e,r);var J=r,Q=[]; +return P(G,function(t){P(u.aryMethod[t],function(t){var e=J[u.remap[t]||t];e&&Q.push([t,R(t,e)])})}),P(K(J),function(t){var e=J[t];if("function"==typeof e){for(var r=Q.length;r--;)if(Q[r][0]==t)return;e.convert=A(t,e),Q.push([t,e])}}),P(Q,function(t){J[t[0]]=t[1]}),J.convert=v,O&&(J.placeholder=L),P(K(J),function(t){P(u.realToAlias[t]||[],function(e){J[e]=J[t]})}),J}var u=r(2),p=u.mutate,f=r(3);t.exports=l},function(t,e){e.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn", +extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq", +indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"}, +e.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"], 3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"], 4:["fill","setWith","updateWith"]},e.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},e.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1, transform:2},e.iterateeRearg={mapKeys:[1]},e.methodRearg={assignInAllWith:[1,2,0],assignInWith:[1,2,0],assignAllWith:[1,2,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,2,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0], diff --git a/dist/lodash.js b/dist/lodash.js index 22e73749bd..47e584660b 100644 --- a/dist/lodash.js +++ b/dist/lodash.js @@ -12,7 +12,7 @@ var undefined; /** Used as the semantic version number. */ - var VERSION = '4.14.1'; + var VERSION = '4.14.2'; /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; @@ -134,7 +134,7 @@ /** * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns). + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). */ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source); @@ -157,7 +157,7 @@ /** * Used to match - * [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components). + * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). */ var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; @@ -266,9 +266,9 @@ var contextProps = [ 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', - 'Promise', 'Reflect', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', - 'Uint8Array', 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', - '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' + 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', '_', 'clearTimeout', + 'isFinite', 'parseInt', 'setTimeout' ]; /** Used to make template sourceURLs easier to identify. */ @@ -1129,7 +1129,7 @@ } /** - * Creates a function that invokes `func` with its first argument transformed. + * Creates a unary function that invokes `func` with its argument transformed. * * @private * @param {Function} func The function to wrap. @@ -1282,7 +1282,6 @@ /** Built-in constructor references. */ var Array = context.Array, - Date = context.Date, Error = context.Error, Math = context.Math, RegExp = context.RegExp, @@ -1316,7 +1315,7 @@ /** * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) * of values. */ var objectToString = objectProto.toString; @@ -1332,29 +1331,28 @@ /** Built-in value references. */ var Buffer = moduleExports ? context.Buffer : undefined, - Reflect = context.Reflect, Symbol = context.Symbol, Uint8Array = context.Uint8Array, - enumerate = Reflect ? Reflect.enumerate : undefined, + getPrototype = overArg(Object.getPrototypeOf, Object), iteratorSymbol = Symbol ? Symbol.iterator : undefined, objectCreate = context.Object.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; - /** Built-in method references that are mockable. */ - var clearTimeout = function(id) { return context.clearTimeout.call(root, id); }, - setTimeout = function(func, wait) { return context.setTimeout.call(root, func, wait); }; + /** Mocked built-ins. */ + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, + ctxNow = context.Date && context.Date.now !== root.Date.now && context.Date.now, + ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeCeil = Math.ceil, nativeFloor = Math.floor, - nativeGetPrototype = Object.getPrototypeOf, nativeGetSymbols = Object.getOwnPropertySymbols, nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, - nativeKeys = Object.keys, + nativeKeys = overArg(Object.keys, Object), nativeMax = Math.max, nativeMin = Math.min, nativeParseInt = context.parseInt, @@ -2201,6 +2199,31 @@ /*------------------------------------------------------------------------*/ + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var result = (isArray(value) || isString(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; + + var length = result.length, + skipIndexes = !!length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + return result; + } + /** * Used by `_.defaults` to customize its `_.assignIn` use. * @@ -2237,7 +2260,7 @@ /** * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. * * @private @@ -2445,14 +2468,13 @@ if (object == null) { return !length; } - var index = length; - while (index--) { - var key = props[index], + object = Object(object); + while (length--) { + var key = props[length], predicate = source[key], value = object[key]; - if ((value === undefined && - !(key in Object(object))) || !predicate(value)) { + if ((value === undefined && !(key in object)) || !predicate(value)) { return false; } } @@ -2479,7 +2501,7 @@ * @param {Function} func The function to delay. * @param {number} wait The number of milliseconds to delay invocation. * @param {Array} args The arguments to provide to `func`. - * @returns {number} Returns the timer id. + * @returns {number|Object} Returns the timer id or timeout object. */ function baseDelay(func, wait, args) { if (typeof func != 'function') { @@ -2824,12 +2846,7 @@ * @returns {boolean} Returns `true` if `key` exists, else `false`. */ function baseHas(object, key) { - // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`, - // that are composed entirely of index properties, return `false` for - // `hasOwnProperty` checks of them. - return object != null && - (hasOwnProperty.call(object, key) || - (typeof object == 'object' && key in object && getPrototype(object) === null)); + return object != null && hasOwnProperty.call(object, key); } /** @@ -3203,40 +3220,47 @@ } /** - * The base implementation of `_.keys` which doesn't skip the constructor - * property of prototypes or treat sparse arrays as dense. + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. */ - var baseKeys = overArg(nativeKeys, Object); + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } /** - * The base implementation of `_.keysIn` which doesn't skip the constructor - * property of prototypes or treat sparse arrays as dense. + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. */ function baseKeysIn(object) { - object = object == null ? object : Object(object); + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; - var result = []; for (var key in object) { - result.push(key); + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } } return result; } - // Fallback for IE < 9 with es6-shim. - if (enumerate && !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf')) { - baseKeysIn = function(object) { - return iteratorToArray(enumerate(object)); - }; - } - /** * The base implementation of `_.lt` which doesn't coerce arguments. * @@ -3321,7 +3345,7 @@ return; } if (!(isArray(source) || isTypedArray(source))) { - var props = keysIn(source); + var props = baseKeysIn(source); } arrayEach(props || source, function(srcValue, key) { if (props) { @@ -3688,6 +3712,9 @@ * @returns {Object} Returns `object`. */ function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } path = isKey(path, object) ? [path] : castPath(path); var index = -1, @@ -3696,20 +3723,19 @@ nested = object; while (nested != null && ++index < length) { - var key = toKey(path[index]); - if (isObject(nested)) { - var newValue = value; - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = objValue == null - ? (isIndex(path[index + 1]) ? [] : {}) - : objValue; - } + var key = toKey(path[index]), + newValue = value; + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); } - assignValue(nested, key, newValue); } + assignValue(nested, key, newValue); nested = nested[key]; } return object; @@ -4002,7 +4028,7 @@ object = parent(object, path); var key = toKey(last(path)); - return !(object != null && baseHas(object, key)) || delete object[key]; + return !(object != null && hasOwnProperty.call(object, key)) || delete object[key]; } /** @@ -4157,6 +4183,16 @@ return (!start && end >= length) ? array : baseSlice(array, start, end); } + /** + * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). + * + * @private + * @param {number|Object} id The timer id or timeout object of the timer to clear. + */ + var clearTimeout = ctxClearTimeout || function(id) { + return root.clearTimeout(id); + }; + /** * Creates a clone of `buffer`. * @@ -4650,7 +4686,7 @@ function createCtor(Ctor) { return function() { // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist // for more details. var args = arguments; switch (args.length) { @@ -5338,7 +5374,7 @@ case regexpTag: case stringTag: // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring // for more details. return object == (other + ''); @@ -5400,7 +5436,7 @@ var index = objLength; while (index--) { var key = objProps[index]; - if (!(isPartial ? key in other : baseHas(other, key))) { + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { return false; } } @@ -5536,19 +5572,6 @@ return arguments.length ? result(arguments[0], arguments[1]) : result; } - /** - * Gets the "length" property value of `object`. - * - * **Note:** This function is used to avoid a - * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects - * Safari on at least iOS 8.1-8.3 ARM64. - * - * @private - * @param {Object} object The object to query. - * @returns {*} Returns the "length" value. - */ - var getLength = baseProperty('length'); - /** * Gets the data for `map`. * @@ -5597,15 +5620,6 @@ return baseIsNative(value) ? value : undefined; } - /** - * Gets the `[[Prototype]]` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {null|Object} Returns the `[[Prototype]]`. - */ - var getPrototype = overArg(nativeGetPrototype, Object); - /** * Creates an array of the own enumerable symbol properties of `object`. * @@ -5818,23 +5832,6 @@ } } - /** - * Creates an array of index keys for `object` values of arrays, - * `arguments` objects, and strings, otherwise `null` is returned. - * - * @private - * @param {Object} object The object to query. - * @returns {Array|null} Returns index keys, else `null`. - */ - function indexKeys(object) { - var length = object ? object.length : undefined; - if (isLength(length) && - (isArray(object) || isString(object) || isArguments(object))) { - return baseTimes(length, String); - } - return null; - } - /** * Inserts wrapper `details` in a comment at the top of the `source` body. * @@ -6119,6 +6116,25 @@ return objValue; } + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + /** * Gets the parent value at `path` of `object`. * @@ -6187,6 +6203,18 @@ }; }()); + /** + * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @returns {number|Object} Returns the timer id or timeout object. + */ + var setTimeout = ctxSetTimeout || function(func, wait) { + return root.setTimeout(func, wait); + }; + /** * Sets the `toString` method of `wrapper` to mimic the source of `reference` * with wrapper details in a comment at the top of the source body. @@ -6407,7 +6435,7 @@ /** * Creates an array of `array` values not included in the other given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. The order of result values is determined by the * order they occur in the first array. * @@ -6910,7 +6938,7 @@ /** * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. If `fromIndex` is negative, it's used as the * offset from the end of `array`. * @@ -6958,12 +6986,13 @@ * // => [1, 2] */ function initial(array) { - return dropRight(array, 1); + var length = array ? array.length : 0; + return length ? baseSlice(array, 0, -1) : []; } /** * Creates an array of unique values that are included in all given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. The order of result values is determined by the * order they occur in the first array. * @@ -7167,7 +7196,7 @@ /** * Removes all given values from `array` using - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. * * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` @@ -7636,7 +7665,8 @@ * // => [2, 3] */ function tail(array) { - return drop(array, 1); + var length = array ? array.length : 0; + return length ? baseSlice(array, 1, length) : []; } /** @@ -7793,7 +7823,7 @@ /** * Creates an array of unique values, in order, from all given arrays using - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. * * @static @@ -7874,7 +7904,7 @@ /** * Creates a duplicate-free version of an array, using - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons, in which only the first occurrence of each * element is kept. * @@ -8019,7 +8049,7 @@ /** * Creates an array excluding all given values using - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. * * **Note:** Unlike `_.pull`, this method returns a new array. @@ -8590,6 +8620,11 @@ * Iteration is stopped once `predicate` returns falsey. The predicate is * invoked with three arguments: (value, index|key, collection). * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * * @static * @memberOf _ * @since 0.1.0 @@ -8907,7 +8942,7 @@ /** * Checks if `value` is in `collection`. If `collection` is a string, it's * checked for a substring of `value`, otherwise - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * is used for equality comparisons. If `fromIndex` is negative, it's used as * the offset from the end of `collection`. * @@ -9375,7 +9410,7 @@ return collection.size; } } - return keys(collection).length; + return baseKeys(collection).length; } /** @@ -9487,9 +9522,9 @@ * }, _.now()); * // => Logs the number of milliseconds it took for the deferred invocation. */ - function now() { - return Date.now(); - } + var now = ctxNow || function() { + return root.Date.now(); + }; /*------------------------------------------------------------------------*/ @@ -10030,7 +10065,7 @@ * **Note:** The cache is exposed as the `cache` property on the memoized * function. Its creation may be customized by replacing the `_.memoize.Cache` * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object) + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) * method interface of `delete`, `get`, `has`, and `set`. * * @static @@ -10330,7 +10365,7 @@ /** * Creates a function that invokes `func` with the `this` binding of the * create function and an array of arguments much like - * [`Function#apply`](http://www.ecma-international.org/ecma-262/6.0/#sec-function.prototype.apply). + * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). * * **Note:** This method is based on the * [spread operator](https://mdn.io/spread_operator). @@ -10677,7 +10712,7 @@ /** * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * comparison between two values to determine if they are equivalent. * * @static @@ -10857,7 +10892,7 @@ * // => false */ function isArrayLike(value) { - return value != null && isLength(getLength(value)) && !isFunction(value); + return value != null && isLength(value.length) && !isFunction(value); } /** @@ -10957,8 +10992,7 @@ * @since 0.1.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. * @example * * _.isElement(document.body); @@ -11016,12 +11050,14 @@ return !value.size; } } + var isProto = isPrototype(value); for (var key in value) { - if (hasOwnProperty.call(value, key)) { + if (hasOwnProperty.call(value, key) && + !(isProto && key == 'constructor')) { return false; } } - return !(nonEnumShadows && keys(value).length); + return !(nonEnumShadows && nativeKeys(value).length); } /** @@ -11040,8 +11076,7 @@ * @category Lang * @param {*} value The value to compare. * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, - * else `false`. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. * @example * * var object = { 'a': 1 }; @@ -11070,8 +11105,7 @@ * @param {*} value The value to compare. * @param {*} other The other value to compare. * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if the values are equivalent, - * else `false`. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. * @example * * function isGreeting(value) { @@ -11105,8 +11139,7 @@ * @since 3.0.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an error object, - * else `false`. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. * @example * * _.isError(new Error); @@ -11134,8 +11167,7 @@ * @since 0.1.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. * @example * * _.isFinite(3); @@ -11212,16 +11244,15 @@ /** * Checks if `value` is a valid array-like length. * - * **Note:** This function is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. * @example * * _.isLength(3); @@ -11243,7 +11274,7 @@ /** * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types) + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static @@ -11322,8 +11353,12 @@ * Performs a partial deep comparison between `object` and `source` to * determine if `object` contains equivalent property values. * - * **Note:** This method supports comparing the same values as `_.isEqual` - * and is equivalent to `_.matches` when `source` is partially applied. + * **Note:** This method is equivalent to `_.matches` when `source` is + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. * * @static * @memberOf _ @@ -11536,8 +11571,7 @@ * @since 0.8.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. * @example * * function Foo() { @@ -11601,8 +11635,7 @@ * @since 4.0.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a safe integer, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. * @example * * _.isSafeInteger(3); @@ -11896,7 +11929,7 @@ * Converts `value` to an integer. * * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger). + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). * * @static * @memberOf _ @@ -11930,7 +11963,7 @@ * array-like object. * * **Note:** This method is based on - * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). * * @static * @memberOf _ @@ -12159,13 +12192,7 @@ * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } */ var assignIn = createAssigner(function(object, source) { - if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) { - copyObject(source, keysIn(source), object); - return; - } - for (var key in source) { - assignValue(object, key, source[key]); - } + copyObject(source, keysIn(source), object); }); /** @@ -12774,7 +12801,7 @@ * Creates an array of the own enumerable property names of `object`. * * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) * for more details. * * @static @@ -12799,23 +12826,7 @@ * // => ['0', '1'] */ function keys(object) { - var isProto = isPrototype(object); - if (!(isProto || isArrayLike(object))) { - return baseKeys(object); - } - var indexes = indexKeys(object), - skipIndexes = !!indexes, - result = indexes || [], - length = result.length; - - for (var key in object) { - if (baseHas(object, key) && - !(skipIndexes && (key == 'length' || isIndex(key, length))) && - !(isProto && key == 'constructor')) { - result.push(key); - } - } - return result; + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); } /** @@ -12842,23 +12853,7 @@ * // => ['a', 'b', 'c'] (iteration order is not guaranteed) */ function keysIn(object) { - var index = -1, - isProto = isPrototype(object), - props = baseKeysIn(object), - propsLength = props.length, - indexes = indexKeys(object), - skipIndexes = !!indexes, - result = indexes || [], - length = result.length; - - while (++index < propsLength) { - var key = props[index]; - if (!(skipIndexes && (key == 'length' || isIndex(key, length))) && - !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); } /** @@ -15038,8 +15033,12 @@ * object and `source`, returning `true` if the given object has equivalent * property values, else `false`. * - * **Note:** The created function supports comparing the same values as - * `_.isEqual` is equivalent to `_.isMatch` with `source` partially applied. + * **Note:** The created function is equivalent to `_.isMatch` with `source` + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. * * @static * @memberOf _ @@ -15066,7 +15065,9 @@ * value at `path` of a given object to `srcValue`, returning `true` if the * object value is equivalent, else `false`. * - * **Note:** This method supports comparing the same values as `_.isEqual`. + * **Note:** Partial comparisons will match empty array and empty object + * `srcValue` values against any array or object value, respectively. See + * `_.isEqual` for a list of supported value comparisons. * * @static * @memberOf _ diff --git a/dist/lodash.min.js b/dist/lodash.min.js index 5c282e70a2..744569f444 100644 --- a/dist/lodash.min.js +++ b/dist/lodash.min.js @@ -5,126 +5,125 @@ ;(function(){function t(t,n){return t.set(n[0],n[1]),t}function n(t,n){return t.add(n),t}function r(t,n,r){switch(r.length){case 0:return t.call(n);case 1:return t.call(n,r[0]);case 2:return t.call(n,r[0],r[1]);case 3:return t.call(n,r[0],r[1],r[2])}return t.apply(n,r)}function e(t,n,r,e){for(var u=-1,o=t?t.length:0;++u=n?t:n)),t}function dn(t,n,r,e,o,i,f){var c;if(e&&(c=i?e(t,o,i,f):e(t)),c!==P)return c;if(!cu(t))return t;if(o=Zi(t)){if(c=he(t),!n)return Wr(t,c)}else{var a=St(t),l="[object Function]"==a||"[object GeneratorFunction]"==a;if(Vi(t))return kr(t,n);if("[object Object]"==a||"[object Arguments]"==a||l&&!i){if(C(t))return i?t:{};if(c=pe(l?{}:t), -!n)return Mr(t,_n(c,t))}else{if(!$t[a])return i?t:{};c=_e(t,a,dn,n)}}if(f||(f=new cn),i=f.get(t))return i;if(f.set(t,c),!o)var s=r?Wn(t,mu,ri):mu(t);return u(s||t,function(u,o){s&&(o=u,u=t[o]),sn(c,o,dn(u,n,r,e,o,t,f))}),c}function yn(t){var n=mu(t);return function(r){return bn(r,t,n)}}function bn(t,n,r){var e=r.length;if(null==t)return!e;for(;e--;){var u=r[e],o=n[u],i=t[u];if(i===P&&!(u in Object(t))||!o(i))return false}return true}function xn(t){return cu(t)?co(t):{}}function jn(t,n,r){if(typeof t!="function")throw new Pu("Expected a function"); -return Rt(function(){t.apply(P,r)},n)}function wn(t,n,r,e){var u=-1,o=c,i=true,f=t.length,s=[],h=n.length;if(!f)return s;r&&(n=l(n,S(r))),e?(o=a,i=false):200<=n.length&&(o=I,i=false,n=new Yt(n));t:for(;++un}function Mn(t,n){return null!=t&&(Yu.call(t,n)||typeof t=="object"&&n in t&&null===ni(t))}function Cn(t,n){return null!=t&&n in Object(t)}function Ln(t,n,r){for(var e=r?a:c,u=t[0].length,o=t.length,i=o,f=Du(o),s=1/0,h=[];i--;){var p=t[i];i&&n&&(p=l(p,S(n))),s=wo(p.length,s),f[i]=!r&&(n||120<=u&&120<=p.length)?new Yt(i&&p):P}var p=t[0],_=-1,v=f[0];t:for(;++_n?r:0,de(n,r)?t[n]:P}function nr(t,n,r){var e=-1;return n=l(n.length?n:[Wu],S(fe())),t=Yn(t,function(t){return{a:l(n,function(n){return n(t)}),b:++e,c:t}}),A(t,function(t,n){var e;t:{e=-1;for(var u=t.a,o=n.a,i=u.length,f=r.length;++e=f?c:c*("desc"==r[e]?-1:1);break t}}e=t.b-n.b}return e})}function rr(t,n){return t=Object(t),er(t,n,function(n,r){ -return r in t})}function er(t,n,r){for(var e=-1,u=n.length,o={};++en||9007199254740991n&&(n=-n>u?0:u+n),r=r>u?u:r,0>r&&(r+=u),u=n>r?0:r-n>>>0,n>>>=0,r=Du(u);++e=u){for(;e>>1,i=t[o];null!==i&&!pu(i)&&(r?i<=n:i=e?t:sr(t,n,r)}function kr(t,n){ -if(n)return t.slice();var r=new t.constructor(t.length);return t.copy(r),r}function Er(t){var n=new t.constructor(t.byteLength);return new oo(n).set(new oo(t)),n}function Sr(t,n){if(t!==n){var r=t!==P,e=null===t,u=t===t,o=pu(t),i=n!==P,f=null===n,c=n===n,a=pu(n);if(!f&&!a&&!o&&t>n||o&&i&&c&&!f&&!a||e&&i&&c||!r&&c||!u)return 1;if(!e&&!o&&!a&&tu?P:o,u=1),n=Object(n);++ei&&f[0]!==a&&f[i-1]!==a?[]:D(f,a), -i-=c.length,ir?r?cr(n,t):n:(r=cr(n,ho(t/T(n))),Lt.test(n)?Or(r.match(Mt),0,t).join(""):r.slice(0,t))}function Yr(t,n,e,u){ -function o(){for(var n=-1,c=arguments.length,a=-1,l=u.length,s=Du(l+c),h=this&&this!==Vt&&this instanceof o?f:t;++an||e)&&(1&t&&(o[2]=h[2],n|=1&r?0:4),(r=h[3])&&(e=o[3],o[3]=e?Rr(e,r,h[4]):r,o[4]=e?D(o[3],"__lodash_placeholder__"):h[4]), -(r=h[5])&&(e=o[5],o[5]=e?Ir(e,r,h[6]):r,o[6]=e?D(o[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(o[7]=r),128&t&&(o[8]=null==o[8]?h[8]:wo(o[8],h[8])),null==o[9]&&(o[9]=h[9]),o[0]=h[0],o[1]=n),t=o[0],n=o[1],r=o[2],e=o[3],u=o[4],f=o[9]=null==o[9]?c?0:t.length:jo(o[9]-a,0),!f&&24&n&&(n&=-25),ii((h?Ho:oi)(n&&1!=n?8==n||16==n?Nr(t,n,f):32!=n&&33!=n||u.length?qr.apply(P,o):Yr(t,n,r,e):Dr(t,n,r),o),t,n)}function ee(t,n,r,e,u,o){var i=2&u,f=t.length,c=n.length;if(f!=c&&!(i&&c>f))return false;if((c=o.get(t))&&o.get(n))return c==n; -var c=-1,a=true,l=1&u?new Yt:P;for(o.set(t,n),o.set(n,t);++cn?0:n,e)):[]}function Ie(t,n,r){var e=t?t.length:0;return e?(n=r||n===P?1:gu(n),n=e-n,sr(t,0,0>n?0:n)):[]}function We(t,n,r){var e=t?t.length:0; -return e?(r=null==r?0:gu(r),0>r&&(r=jo(e+r,0)),g(t,fe(n,3),r)):-1}function Be(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e-1;return r!==P&&(u=gu(r),u=0>r?jo(e+u,0):wo(u,e-1)),g(t,fe(n,3),u,true)}function Me(t){return t&&t.length?t[0]:P}function Ce(t){var n=t?t.length:0;return n?t[n-1]:P}function Le(t,n){return t&&t.length&&n&&n.length?or(t,n):t}function ze(t){return t?ko.call(t):t}function Ue(t){if(!t||!t.length)return[];var n=0;return t=f(t,function(t){if(eu(t))return n=jo(t.length,n),true}),k(n,function(n){ -return l(t,j(n))})}function De(t,n){if(!t||!t.length)return[];var e=Ue(t);return null==n?e:l(e,function(t){return r(n,P,t)})}function $e(t){return t=It(t),t.__chain__=true,t}function Fe(t,n){return n(t)}function Te(){return this}function Ne(t,n){return(Zi(t)?u:Vo)(t,fe(n,3))}function Pe(t,n){return(Zi(t)?o:Ko)(t,fe(n,3))}function Ze(t,n){return(Zi(t)?l:Yn)(t,fe(n,3))}function qe(t,n,r){var e=-1,u=_u(t),o=u.length,i=o-1;for(n=(r?ye(t,n,r):n===P)?1:gn(gu(n),0,o);++e=t&&(n=P),r}}function Je(t,n,r){return n=r?P:n,t=re(t,8,P,P,P,P,P,n),t.placeholder=Je.placeholder,t}function Ye(t,n,r){return n=r?P:n,t=re(t,16,P,P,P,P,P,n),t.placeholder=Ye.placeholder,t}function He(t,n,r){function e(n){ -var r=c,e=a;return c=a=P,_=n,s=t.apply(e,r)}function u(t){var r=t-p;return t-=_,p===P||r>=n||0>r||g&&t>=l}function o(){var t=Ve();if(u(t))return i(t);var r;r=t-_,t=n-(t-p),r=g?wo(t,l-r):t,h=Rt(o,r)}function i(t){return h=P,d&&c?e(t):(c=a=P,s)}function f(){var t=Ve(),r=u(t);if(c=arguments,a=this,p=t,r){if(h===P)return _=t=p,h=Rt(o,n),v?e(t):s;if(g)return h=Rt(o,n),e(p)}return h===P&&(h=Rt(o,n)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof t!="function")throw new Pu("Expected a function");return n=yu(n)||0, -cu(r)&&(v=!!r.leading,l=(g="maxWait"in r)?jo(yu(r.maxWait)||0,n):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==P&&w.clearTimeout.call(Vt,h),_=0,c=p=a=h=P},f.flush=function(){return h===P?s:i(Ve())},f}function Qe(t,n){function r(){var e=arguments,u=n?n.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=t.apply(this,e),r.cache=o.set(u,e),e)}if(typeof t!="function"||n&&typeof n!="function")throw new Pu("Expected a function");return r.cache=new(Qe.Cache||Gt),r}function Xe(t){if(typeof t!="function")throw new Pu("Expected a function"); -return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2])}return!t.apply(this,n)}}function tu(t,n){return t===n||t!==t&&n!==n}function nu(t){return eu(t)&&Yu.call(t,"callee")&&(!ao.call(t,"callee")||"[object Arguments]"==Xu.call(t))}function ru(t){return null!=t&&fu(ti(t))&&!ou(t)}function eu(t){return au(t)&&ru(t)}function uu(t){return!!au(t)&&("[object Error]"==Xu.call(t)||typeof t.message=="string"&&typeof t.name=="string"); -}function ou(t){return t=cu(t)?Xu.call(t):"","[object Function]"==t||"[object GeneratorFunction]"==t}function iu(t){return typeof t=="number"&&t==gu(t)}function fu(t){return typeof t=="number"&&-1=t}function cu(t){var n=typeof t;return!!t&&("object"==n||"function"==n)}function au(t){return!!t&&typeof t=="object"}function lu(t){return typeof t=="number"||au(t)&&"[object Number]"==Xu.call(t)}function su(t){return!(!au(t)||"[object Object]"!=Xu.call(t)||C(t))&&(t=ni(t),null===t||(t=Yu.call(t,"constructor")&&t.constructor, -typeof t=="function"&&t instanceof t&&Ju.call(t)==Qu))}function hu(t){return typeof t=="string"||!Zi(t)&&au(t)&&"[object String]"==Xu.call(t)}function pu(t){return typeof t=="symbol"||au(t)&&"[object Symbol]"==Xu.call(t)}function _u(t){if(!t)return[];if(ru(t))return hu(t)?t.match(Mt):Wr(t);if(fo&&t[fo])return L(t[fo]());var n=St(t);return("[object Map]"==n?z:"[object Set]"==n?$:ku)(t)}function vu(t){return t?(t=yu(t),t===Z||t===-Z?1.7976931348623157e308*(0>t?-1:1):t===t?t:0):0===t?t:0}function gu(t){ -t=vu(t);var n=t%1;return t===t?n?t-n:t:0}function du(t){return t?gn(gu(t),0,4294967295):0}function yu(t){if(typeof t=="number")return t;if(pu(t))return q;if(cu(t)&&(t=ou(t.valueOf)?t.valueOf():t,t=cu(t)?t+"":t),typeof t!="string")return 0===t?t:+t;t=t.replace(at,"");var n=jt.test(t);return n||mt.test(t)?Pt(t.slice(2),n?2:8):xt.test(t)?q:+t}function bu(t){return Br(t,Au(t))}function xu(t){return null==t?"":dr(t)}function ju(t,n,r){return t=null==t?P:In(t,n),t===P?r:t}function wu(t,n){return null!=t&&se(t,n,Cn); -}function mu(t){var n=je(t);if(!n&&!ru(t))return Yo(t);var r,e=ve(t),u=!!e,e=e||[],o=e.length;for(r in t)!Mn(t,r)||u&&("length"==r||de(r,o))||n&&"constructor"==r||e.push(r);return e}function Au(t){for(var n=-1,r=je(t),e=Gn(t),u=e.length,o=ve(t),i=!!o,o=o||[],f=o.length;++nt)&&(t==n.length-1?n.pop():lo.call(n,t,1),true)},Kt.prototype.get=function(t){var n=this.__data__;return t=hn(n,t),0>t?P:n[t][1]},Kt.prototype.has=function(t){return-1e?r.push([t,n]):r[e][1]=n,this},Gt.prototype.clear=function(){this.__data__={hash:new qt,map:new(Ro||Kt),string:new qt}},Gt.prototype.delete=function(t){return ce(this,t).delete(t)},Gt.prototype.get=function(t){return ce(this,t).get(t); -},Gt.prototype.has=function(t){return ce(this,t).has(t)},Gt.prototype.set=function(t,n){return ce(this,t).set(t,n),this},Yt.prototype.add=Yt.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Yt.prototype.has=function(t){return this.__data__.has(t)},cn.prototype.clear=function(){this.__data__=new Kt},cn.prototype.delete=function(t){return this.__data__.delete(t)},cn.prototype.get=function(t){return this.__data__.get(t)},cn.prototype.has=function(t){return this.__data__.has(t); -},cn.prototype.set=function(t,n){var r=this.__data__;if(r instanceof Kt){if(r=r.__data__,!Ro||199>r.length)return r.push([t,n]),this;r=this.__data__=new Gt(r)}return r.set(t,n),this};var Vo=zr(En),Ko=zr(Sn,true),Go=Ur(),Jo=Ur(true),Yo=U(xo);io&&!ao.call({valueOf:1},"valueOf")&&(Gn=function(t){return L(io(t))});var Ho=Lo?function(t,n){return Lo.set(t,n),t}:Wu,Qo=Wo&&1/$(new Wo([,-0]))[1]==Z?function(t){return new Wo(t)}:Cu,Xo=Lo?function(t){return Lo.get(t)}:Cu,ti=j("length"),ni=U(_o),ri=vo?U(vo):zu,ei=vo?function(t){ -for(var n=[];t;)s(n,ri(t)),t=ni(t);return n}:zu;(So&&"[object DataView]"!=St(new So(new ArrayBuffer(1)))||Ro&&"[object Map]"!=St(new Ro)||Io&&"[object Promise]"!=St(Io.resolve())||Wo&&"[object Set]"!=St(new Wo)||Bo&&"[object WeakMap]"!=St(new Bo))&&(St=function(t){var n=Xu.call(t);if(t=(t="[object Object]"==n?t.constructor:P)?ke(t):P)switch(t){case Do:return"[object DataView]";case $o:return"[object Map]";case Fo:return"[object Promise]";case To:return"[object Set]";case No:return"[object WeakMap]"; -}return n});var ui=Ku?ou:Uu,oi=function(){var t=0,n=0;return function(r,e){var u=Ve(),o=16-(u-n);if(n=u,0=n}),Zi=Du.isArray,qi=Ht?S(Ht):Dn,Vi=go||Uu,Ki=Qt?S(Qt):$n,Gi=Xt?S(Xt):Tn,Ji=tn?S(tn):Zn,Yi=nn?S(nn):qn,Hi=rn?S(rn):Vn,Qi=Qr(Jn),Xi=Qr(function(t,n){return t<=n}),tf=Lr(function(t,n){if(zo||je(n)||ru(n))Br(n,mu(n),t);else for(var r in n)Yu.call(n,r)&&sn(t,r,n[r])}),nf=Lr(function(t,n){ -if(zo||je(n)||ru(n))Br(n,Au(n),t);else for(var r in n)sn(t,r,n[r])}),rf=Lr(function(t,n,r,e){Br(n,Au(n),t,e)}),ef=Lr(function(t,n,r,e){Br(n,mu(n),t,e)}),uf=ar(function(t,n){return vn(t,kn(n,1))}),of=ar(function(t){return t.push(P,an),r(rf,P,t)}),ff=ar(function(t){return t.push(P,me),r(hf,P,t)}),cf=Vr(function(t,n,r){t[n]=r},Iu(Wu)),af=Vr(function(t,n,r){Yu.call(t,n)?t[n].push(r):t[n]=[r]},fe),lf=ar(Un),sf=Lr(function(t,n,r){Xn(t,n,r)}),hf=Lr(function(t,n,r,e){Xn(t,n,r,e)}),pf=ar(function(t,n){return null==t?{}:(n=l(kn(n,1),Oe), -rr(t,wn(Wn(t,Au,ei),n)))}),_f=ar(function(t,n){return null==t?{}:rr(t,l(kn(n,1),Oe))}),vf=ne(mu),gf=ne(Au),df=Fr(function(t,n,r){return n=n.toLowerCase(),t+(r?Eu(n):n)}),yf=Fr(function(t,n,r){return t+(r?"-":"")+n.toLowerCase()}),bf=Fr(function(t,n,r){return t+(r?" ":"")+n.toLowerCase()}),xf=$r("toLowerCase"),jf=Fr(function(t,n,r){return t+(r?"_":"")+n.toLowerCase()}),wf=Fr(function(t,n,r){return t+(r?" ":"")+Af(n)}),mf=Fr(function(t,n,r){return t+(r?" ":"")+n.toUpperCase()}),Af=$r("toUpperCase"),Of=ar(function(t,n){ -try{return r(t,P,n)}catch(t){return uu(t)?t:new Fu(t)}}),kf=ar(function(t,n){return u(kn(n,1),function(n){n=Oe(n),t[n]=Ci(t[n],t)}),t}),Ef=Zr(),Sf=Zr(true),Rf=ar(function(t,n){return function(r){return Un(r,t,n)}}),If=ar(function(t,n){return function(r){return Un(t,r,n)}}),Wf=Gr(l),Bf=Gr(i),Mf=Gr(_),Cf=Hr(),Lf=Hr(true),zf=Kr(function(t,n){return t+n},0),Uf=te("ceil"),Df=Kr(function(t,n){return t/n},1),$f=te("floor"),Ff=Kr(function(t,n){return t*n},1),Tf=te("round"),Nf=Kr(function(t,n){return t-n},0);return It.after=function(t,n){ -if(typeof n!="function")throw new Pu("Expected a function");return t=gu(t),function(){if(1>--t)return n.apply(this,arguments)}},It.ary=Ke,It.assign=tf,It.assignIn=nf,It.assignInWith=rf,It.assignWith=ef,It.at=uf,It.before=Ge,It.bind=Ci,It.bindAll=kf,It.bindKey=Li,It.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Zi(t)?t:[t]},It.chain=$e,It.chunk=function(t,n,r){if(n=(r?ye(t,n,r):n===P)?1:jo(gu(n),0),r=t?t.length:0,!r||1>n)return[];for(var e=0,u=0,o=Du(ho(r/n));er&&(r=-r>u?0:u+r),e=e===P||e>u?u:gu(e),0>e&&(e+=u),e=r>e?0:du(e);r>>0,r?(t=xu(t))&&(typeof n=="string"||null!=n&&!Ji(n))&&(n=dr(n),""==n&&Lt.test(t))?Or(t.match(Mt),0,r):Eo.call(t,n,r):[]},It.spread=function(t,n){if(typeof t!="function")throw new Pu("Expected a function");return n=n===P?0:jo(gu(n),0),ar(function(e){var u=e[n];return e=Or(e,0,n),u&&s(e,u),r(t,this,e)})},It.tail=function(t){return Re(t,1)},It.take=function(t,n,r){return t&&t.length?(n=r||n===P?1:gu(n), -sr(t,0,0>n?0:n)):[]},It.takeRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===P?1:gu(n),n=e-n,sr(t,0>n?0:n,e)):[]},It.takeRightWhile=function(t,n){return t&&t.length?br(t,fe(n,3),false,true):[]},It.takeWhile=function(t,n){return t&&t.length?br(t,fe(n,3)):[]},It.tap=function(t,n){return n(t),t},It.throttle=function(t,n,r){var e=true,u=true;if(typeof t!="function")throw new Pu("Expected a function");return cu(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),He(t,n,{leading:e,maxWait:n, -trailing:u})},It.thru=Fe,It.toArray=_u,It.toPairs=vf,It.toPairsIn=gf,It.toPath=function(t){return Zi(t)?l(t,Oe):pu(t)?[t]:Wr(fi(t))},It.toPlainObject=bu,It.transform=function(t,n,r){var e=Zi(t)||Hi(t);if(n=fe(n,4),null==r)if(e||cu(t)){var o=t.constructor;r=e?Zi(t)?new o:[]:ou(o)?xn(ni(t)):{}}else r={};return(e?u:En)(t,function(t,e,u){return n(r,t,e,u)}),r},It.unary=function(t){return Ke(t,1)},It.union=gi,It.unionBy=di,It.unionWith=yi,It.uniq=function(t){return t&&t.length?yr(t):[]},It.uniqBy=function(t,n){ -return t&&t.length?yr(t,fe(n,2)):[]},It.uniqWith=function(t,n){return t&&t.length?yr(t,P,n):[]},It.unset=function(t,n){var r;if(null==t)r=true;else{r=t;var e=n,e=be(e,r)?[e]:Ar(e);r=Ae(r,e),e=Oe(Ce(e)),r=!(null!=r&&Mn(r,e))||delete r[e]}return r},It.unzip=Ue,It.unzipWith=De,It.update=function(t,n,r){return null==t?t:lr(t,n,(typeof r=="function"?r:Wu)(In(t,n)),void 0)},It.updateWith=function(t,n,r,e){return e=typeof e=="function"?e:P,null!=t&&(t=lr(t,n,(typeof r=="function"?r:Wu)(In(t,n)),e)),t},It.values=ku, -It.valuesIn=function(t){return null==t?[]:R(t,Au(t))},It.without=bi,It.words=Ru,It.wrap=function(t,n){return n=null==n?Wu:n,$i(n,t)},It.xor=xi,It.xorBy=ji,It.xorWith=wi,It.zip=mi,It.zipObject=function(t,n){return wr(t||[],n||[],sn)},It.zipObjectDeep=function(t,n){return wr(t||[],n||[],lr)},It.zipWith=Ai,It.entries=vf,It.entriesIn=gf,It.extend=nf,It.extendWith=rf,Mu(It,It),It.add=zf,It.attempt=Of,It.camelCase=df,It.capitalize=Eu,It.ceil=Uf,It.clamp=function(t,n,r){return r===P&&(r=n,n=P),r!==P&&(r=yu(r), -r=r===r?r:0),n!==P&&(n=yu(n),n=n===n?n:0),gn(yu(t),n,r)},It.clone=function(t){return dn(t,false,true)},It.cloneDeep=function(t){return dn(t,true,true)},It.cloneDeepWith=function(t,n){return dn(t,true,true,n)},It.cloneWith=function(t,n){return dn(t,false,true,n)},It.conformsTo=function(t,n){return null==n||bn(t,n,mu(n))},It.deburr=Su,It.defaultTo=function(t,n){return null==t||t!==t?n:t},It.divide=Df,It.endsWith=function(t,n,r){t=xu(t),n=dr(n);var e=t.length,e=r=r===P?e:gn(gu(r),0,e);return r-=n.length,0<=r&&t.slice(r,e)==n; -},It.eq=tu,It.escape=function(t){return(t=xu(t))&&X.test(t)?t.replace(H,un):t},It.escapeRegExp=function(t){return(t=xu(t))&&ct.test(t)?t.replace(ft,"\\$&"):t},It.every=function(t,n,r){var e=Zi(t)?i:mn;return r&&ye(t,n,r)&&(n=P),e(t,fe(n,3))},It.find=Ei,It.findIndex=We,It.findKey=function(t,n){return v(t,fe(n,3),En)},It.findLast=Si,It.findLastIndex=Be,It.findLastKey=function(t,n){return v(t,fe(n,3),Sn)},It.floor=$f,It.forEach=Ne,It.forEachRight=Pe,It.forIn=function(t,n){return null==t?t:Go(t,fe(n,3),Au); -},It.forInRight=function(t,n){return null==t?t:Jo(t,fe(n,3),Au)},It.forOwn=function(t,n){return t&&En(t,fe(n,3))},It.forOwnRight=function(t,n){return t&&Sn(t,fe(n,3))},It.get=ju,It.gt=Ni,It.gte=Pi,It.has=function(t,n){return null!=t&&se(t,n,Mn)},It.hasIn=wu,It.head=Me,It.identity=Wu,It.includes=function(t,n,r,e){return t=ru(t)?t:ku(t),r=r&&!e?gu(r):0,e=t.length,0>r&&(r=jo(e+r,0)),hu(t)?r<=e&&-1r&&(r=jo(e+r,0)),d(t,n,r)):-1},It.inRange=function(t,n,r){return n=vu(n),r===P?(r=n,n=0):r=vu(r),t=yu(t),t>=wo(n,r)&&t=t},It.isSet=Yi,It.isString=hu, -It.isSymbol=pu,It.isTypedArray=Hi,It.isUndefined=function(t){return t===P},It.isWeakMap=function(t){return au(t)&&"[object WeakMap]"==St(t)},It.isWeakSet=function(t){return au(t)&&"[object WeakSet]"==Xu.call(t)},It.join=function(t,n){return t?bo.call(t,n):""},It.kebabCase=yf,It.last=Ce,It.lastIndexOf=function(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e;if(r!==P&&(u=gu(r),u=(0>u?jo(e+u,0):wo(u,e-1))+1),n!==n)return g(t,b,u-1,true);for(;u--;)if(t[u]===n)return u;return-1},It.lowerCase=bf,It.lowerFirst=xf, -It.lt=Qi,It.lte=Xi,It.max=function(t){return t&&t.length?An(t,Wu,Bn):P},It.maxBy=function(t,n){return t&&t.length?An(t,fe(n,2),Bn):P},It.mean=function(t){return x(t,Wu)},It.meanBy=function(t,n){return x(t,fe(n,2))},It.min=function(t){return t&&t.length?An(t,Wu,Jn):P},It.minBy=function(t,n){return t&&t.length?An(t,fe(n,2),Jn):P},It.stubArray=zu,It.stubFalse=Uu,It.stubObject=function(){return{}},It.stubString=function(){return""},It.stubTrue=function(){return true},It.multiply=Ff,It.nth=function(t,n){ -return t&&t.length?tr(t,gu(n)):P},It.noConflict=function(){return Vt._===this&&(Vt._=to),this},It.noop=Cu,It.now=Ve,It.pad=function(t,n,r){t=xu(t);var e=(n=gu(n))?T(t):0;return!n||e>=n?t:(n=(n-e)/2,Jr(po(n),r)+t+Jr(ho(n),r))},It.padEnd=function(t,n,r){t=xu(t);var e=(n=gu(n))?T(t):0;return n&&en){var e=t;t=n,n=e}return r||t%1||n%1?(r=Ao(),wo(t+r*(n-t+Nt("1e-"+((r+"").length-1))),n)):fr(t,n)},It.reduce=function(t,n,r){var e=Zi(t)?h:m,u=3>arguments.length;return e(t,fe(n,4),r,u,Vo)},It.reduceRight=function(t,n,r){var e=Zi(t)?p:m,u=3>arguments.length;return e(t,fe(n,4),r,u,Ko)},It.repeat=function(t,n,r){ -return n=(r?ye(t,n,r):n===P)?1:gu(n),cr(xu(t),n)},It.replace=function(){var t=arguments,n=xu(t[0]);return 3>t.length?n:Oo.call(n,t[1],t[2])},It.result=function(t,n,r){n=be(n,t)?[n]:Ar(n);var e=-1,u=n.length;for(u||(t=P,u=1);++et||9007199254740991=o)return t;if(o=r-T(e),1>o)return e;if(r=i?Or(i,0,o).join(""):t.slice(0,o),u===P)return r+e;if(i&&(o+=r.length-o),Ji(u)){if(t.slice(o).search(u)){var f=r;for(u.global||(u=Nu(u.source,xu(yt.exec(u))+"g")), -u.lastIndex=0;i=u.exec(f);)var c=i.index;r=r.slice(0,c===P?o:c)}}else t.indexOf(dr(u),o)!=o&&(u=r.lastIndexOf(u),-1u.__dir__?"Right":"")}),u},Zt.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse()}}),u(["filter","map","takeWhile"],function(t,n){var r=n+1,e=1==r||3==r;Zt.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({ -iteratee:fe(t,3),type:r}),n.__filtered__=n.__filtered__||e,n}}),u(["head","last"],function(t,n){var r="take"+(n?"Right":"");Zt.prototype[t]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(t,n){var r="drop"+(n?"":"Right");Zt.prototype[t]=function(){return this.__filtered__?new Zt(this):this[r](1)}}),Zt.prototype.compact=function(){return this.filter(Wu)},Zt.prototype.find=function(t){return this.filter(t).head()},Zt.prototype.findLast=function(t){return this.reverse().find(t); -},Zt.prototype.invokeMap=ar(function(t,n){return typeof t=="function"?new Zt(this):this.map(function(r){return Un(r,t,n)})}),Zt.prototype.reject=function(t){return this.filter(Xe(fe(t)))},Zt.prototype.slice=function(t,n){t=gu(t);var r=this;return r.__filtered__&&(0n)?new Zt(r):(0>t?r=r.takeRight(-t):t&&(r=r.drop(t)),n!==P&&(n=gu(n),r=0>n?r.dropRight(-n):r.take(n-t)),r)},Zt.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Zt.prototype.toArray=function(){return this.take(4294967295); -},En(Zt.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),e=/^(?:head|last)$/.test(n),u=It[e?"take"+("last"==n?"Right":""):n],o=e||/^find/.test(n);u&&(It.prototype[n]=function(){function n(t){return t=u.apply(It,s([t],f)),e&&h?t[0]:t}var i=this.__wrapped__,f=e?[1]:arguments,c=i instanceof Zt,a=f[0],l=c||Zi(i);l&&r&&typeof a=="function"&&1!=a.length&&(c=l=false);var h=this.__chain__,p=!!this.__actions__.length,a=o&&!h,c=c&&!p;return!o&&l?(i=c?i:new Zt(this),i=t.apply(i,f),i.__actions__.push({ -func:Fe,args:[n],thisArg:P}),new Tt(i,h)):a&&c?t.apply(this,f):(i=this.thru(n),a?e?i.value()[0]:i.value():i)})}),u("pop push shift sort splice unshift".split(" "),function(t){var n=Zu[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);It.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){var u=this.value();return n.apply(Zi(u)?u:[],t)}return this[r](function(r){return n.apply(Zi(r)?r:[],t)})}}),En(Zt.prototype,function(t,n){var r=It[n];if(r){var e=r.name+""; -(Uo[e]||(Uo[e]=[])).push({name:n,func:r})}}),Uo[qr(P,2).name]=[{name:"wrapper",func:P}],Zt.prototype.clone=function(){var t=new Zt(this.__wrapped__);return t.__actions__=Wr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Wr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Wr(this.__views__),t},Zt.prototype.reverse=function(){if(this.__filtered__){var t=new Zt(this);t.__dir__=-1,t.__filtered__=true}else t=this.clone(),t.__dir__*=-1;return t; -},Zt.prototype.value=function(){var t,n=this.__wrapped__.value(),r=this.__dir__,e=Zi(n),u=0>r,o=e?n.length:0;t=o;for(var i=this.__views__,f=0,c=-1,a=i.length;++co||o==t&&a==t)return xr(n,this.__actions__);e=[];t:for(;t--&&c=this.__values__.length,n=t?P:this.__values__[this.__index__++];return{done:t,value:n}},It.prototype.plant=function(t){ -for(var n,r=this;r instanceof Ft;){var e=Se(r);e.__index__=0,e.__values__=P,n?u.__wrapped__=e:n=e;var u=e,r=r.__wrapped__}return u.__wrapped__=t,n},It.prototype.reverse=function(){var t=this.__wrapped__;return t instanceof Zt?(this.__actions__.length&&(t=new Zt(this)),t=t.reverse(),t.__actions__.push({func:Fe,args:[ze],thisArg:P}),new Tt(t,this.__chain__)):this.thru(ze)},It.prototype.toJSON=It.prototype.valueOf=It.prototype.value=function(){return xr(this.__wrapped__,this.__actions__)},It.prototype.first=It.prototype.head, -fo&&(It.prototype[fo]=Te),It}var P,Z=1/0,q=NaN,V=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],K=/\b__p\+='';/g,G=/\b(__p\+=)''\+/g,J=/(__e\(.*?\)|\b__t\))\+'';/g,Y=/&(?:amp|lt|gt|quot|#39|#96);/g,H=/[&<>"'`]/g,Q=RegExp(Y.source),X=RegExp(H.source),tt=/<%-([\s\S]+?)%>/g,nt=/<%([\s\S]+?)%>/g,rt=/<%=([\s\S]+?)%>/g,et=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ut=/^\w*$/,ot=/^\./,it=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ft=/[\\^$.*+?()[\]{}|]/g,ct=RegExp(ft.source),at=/^\s+|\s+$/g,lt=/^\s+/,st=/\s+$/,ht=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,pt=/\{\n\/\* \[wrapped with (.+)\] \*/,_t=/,? & /,vt=/[a-zA-Z0-9]+/g,gt=/\\(\\)?/g,dt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,yt=/\w*$/,bt=/^0x/i,xt=/^[-+]0x[0-9a-f]+$/i,jt=/^0b[01]+$/i,wt=/^\[object .+?Constructor\]$/,mt=/^0o[0-7]+$/i,At=/^(?:0|[1-9]\d*)$/,Ot=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,kt=/($^)/,Et=/['\n\r\u2028\u2029\\]/g,St="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*",Rt="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+St,It="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",Wt=RegExp("['\u2019]","g"),Bt=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]","g"),Mt=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+It+St,"g"),Ct=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d+",Rt].join("|"),"g"),Lt=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),zt=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Ut="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise Reflect RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Dt={}; -Dt["[object Float32Array]"]=Dt["[object Float64Array]"]=Dt["[object Int8Array]"]=Dt["[object Int16Array]"]=Dt["[object Int32Array]"]=Dt["[object Uint8Array]"]=Dt["[object Uint8ClampedArray]"]=Dt["[object Uint16Array]"]=Dt["[object Uint32Array]"]=true,Dt["[object Arguments]"]=Dt["[object Array]"]=Dt["[object ArrayBuffer]"]=Dt["[object Boolean]"]=Dt["[object DataView]"]=Dt["[object Date]"]=Dt["[object Error]"]=Dt["[object Function]"]=Dt["[object Map]"]=Dt["[object Number]"]=Dt["[object Object]"]=Dt["[object RegExp]"]=Dt["[object Set]"]=Dt["[object String]"]=Dt["[object WeakMap]"]=false; -var $t={};$t["[object Arguments]"]=$t["[object Array]"]=$t["[object ArrayBuffer]"]=$t["[object DataView]"]=$t["[object Boolean]"]=$t["[object Date]"]=$t["[object Float32Array]"]=$t["[object Float64Array]"]=$t["[object Int8Array]"]=$t["[object Int16Array]"]=$t["[object Int32Array]"]=$t["[object Map]"]=$t["[object Number]"]=$t["[object Object]"]=$t["[object RegExp]"]=$t["[object Set]"]=$t["[object String]"]=$t["[object Symbol]"]=$t["[object Uint8Array]"]=$t["[object Uint8ClampedArray]"]=$t["[object Uint16Array]"]=$t["[object Uint32Array]"]=true, -$t["[object Error]"]=$t["[object Function]"]=$t["[object WeakMap]"]=false;var Ft,Tt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Nt=parseFloat,Pt=parseInt,Zt=typeof global=="object"&&global&&global.Object===Object&&global,qt=typeof self=="object"&&self&&self.Object===Object&&self,Vt=Zt||qt||Function("return this")(),Kt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Gt=Kt&&typeof module=="object"&&module&&!module.nodeType&&module,Jt=Gt&&Gt.exports===Kt,Yt=Jt&&Zt.h; -t:{try{Ft=Yt&&Yt.f("util");break t}catch(t){}Ft=void 0}var Ht=Ft&&Ft.isArrayBuffer,Qt=Ft&&Ft.isDate,Xt=Ft&&Ft.isMap,tn=Ft&&Ft.isRegExp,nn=Ft&&Ft.isSet,rn=Ft&&Ft.isTypedArray,en=w({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i", -"\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"}),un=w({"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"}),on=w({"&":"&","<":"<",">":">",""":'"',"'":"'", -"`":"`"}),fn=N();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Vt._=fn, define(function(){return fn})):Gt?((Gt.exports=fn)._=fn,Kt._=fn):Vt._=fn}).call(this); \ No newline at end of file +return-1}function y(t,n,r,e){--r;for(var u=t.length;++r=n?t:n)),t}function gn(t,n,r,e,o,i,f){var c;if(e&&(c=i?e(t,o,i,f):e(t)),c!==N)return c;if(!uu(t))return t;if(o=Fi(t)){if(c=he(t),!n)return Wr(t,c)}else{var a=Et(t),l="[object Function]"==a||"[object GeneratorFunction]"==a;if(Ni(t))return kr(t,n);if("[object Object]"==a||"[object Arguments]"==a||l&&!i){if(C(t))return i?t:{};if(c=pe(l?{}:t),!n)return Mr(t,pn(c,t)); +}else{if(!Ut[a])return i?t:{};c=_e(t,a,gn,n)}}if(f||(f=new Jt),i=f.get(t))return i;if(f.set(t,c),!o)var s=r?Rn(t,bu,Yo):bu(t);return u(s||t,function(u,o){s&&(o=u,u=t[o]),ln(c,o,gn(u,n,r,e,o,t,f))}),c}function dn(t){var n=bu(t);return function(r){return yn(r,t,n)}}function yn(t,n,r){var e=r.length;if(null==t)return!e;for(t=Object(t);e--;){var u=r[e],o=n[u],i=t[u];if(i===N&&!(u in t)||!o(i))return false}return true}function bn(t){return uu(t)?ro(t):{}}function xn(t,n,r){if(typeof t!="function")throw new Uu("Expected a function"); +return ti(function(){t.apply(N,r)},n)}function jn(t,n,r,e){var u=-1,o=c,i=true,f=t.length,s=[],h=n.length;if(!f)return s;r&&(n=l(n,S(r))),e?(o=a,i=false):200<=n.length&&(o=R,i=false,n=new Kt(n));t:for(;++un}function Bn(t,n){return null!=t&&qu.call(t,n)}function Mn(t,n){return null!=t&&n in Object(t)}function Cn(t,n,r){for(var e=r?a:c,u=t[0].length,o=t.length,i=o,f=Cu(o),s=1/0,h=[];i--;){var p=t[i];i&&n&&(p=l(p,S(n))),s=yo(p.length,s),f[i]=!r&&(n||120<=u&&120<=p.length)?new Kt(i&&p):N}var p=t[0],_=-1,v=f[0];t:for(;++_n?r:0,ge(n,r)?t[n]:N}function nr(t,n,r){var e=-1;return n=l(n.length?n:[Eu],S(fe())),t=Yn(t,function(t){return{a:l(n,function(n){return n(t)}),b:++e,c:t}}),A(t,function(t,n){var e;t:{e=-1;for(var u=t.a,o=n.a,i=u.length,f=r.length;++e=f?c:c*("desc"==r[e]?-1:1);break t}}e=t.b-n.b}return e})}function rr(t,n){return t=Object(t),er(t,n,function(n,r){return r in t})}function er(t,n,r){for(var e=-1,u=n.length,o={};++en||9007199254740991n&&(n=-n>u?0:u+n),r=r>u?u:r,0>r&&(r+=u),u=n>r?0:r-n>>>0,n>>>=0,r=Cu(u);++e=u){for(;e>>1,i=t[o];null!==i&&!au(i)&&(r?i<=n:i=e?t:sr(t,n,r)}function kr(t,n){if(n)return t.slice();var r=new t.constructor(t.length);return t.copy(r),r}function Er(t){var n=new t.constructor(t.byteLength);return new Xu(n).set(new Xu(t)),n}function Sr(t,n){if(t!==n){var r=t!==N,e=null===t,u=t===t,o=au(t),i=n!==N,f=null===n,c=n===n,a=au(n);if(!f&&!a&&!o&&t>n||o&&i&&c&&!f&&!a||e&&i&&c||!r&&c||!u)return 1;if(!e&&!o&&!a&&tu?N:o,u=1),n=Object(n);++ei&&f[0]!==a&&f[i-1]!==a?[]:z(f,a),i-=c.length,ir?r?cr(n,t):n:(r=cr(n,ao(t/F(n))), +Ct.test(n)?Or(r.match(Bt),0,t).join(""):r.slice(0,t))}function Yr(t,n,e,u){function o(){for(var n=-1,c=arguments.length,a=-1,l=u.length,s=Cu(l+c),h=this&&this!==qt&&this instanceof o?f:t;++an||e)&&(1&t&&(o[2]=h[2], +n|=1&r?0:4),(r=h[3])&&(e=o[3],o[3]=e?Ir(e,r,h[4]):r,o[4]=e?z(o[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=o[5],o[5]=e?Rr(e,r,h[6]):r,o[6]=e?z(o[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(o[7]=r),128&t&&(o[8]=null==o[8]?h[8]:yo(o[8],h[8])),null==o[9]&&(o[9]=h[9]),o[0]=h[0],o[1]=n),t=o[0],n=o[1],r=o[2],e=o[3],u=o[4],f=o[9]=null==o[9]?c?0:t.length:go(o[9]-a,0),!f&&24&n&&(n&=-25),ni((h?Vo:Xo)(n&&1!=n?8==n||16==n?Nr(t,n,f):32!=n&&33!=n||u.length?qr.apply(N,o):Yr(t,n,r,e):Ur(t,n,r),o),t,n)}function ee(t,n,r,e,u,o){ +var i=2&u,f=t.length,c=n.length;if(f!=c&&!(i&&c>f))return false;if((c=o.get(t))&&o.get(n))return c==n;var c=-1,a=true,l=1&u?new Kt:N;for(o.set(t,n),o.set(n,t);++cr&&(r=go(e+r,0)),g(t,fe(n,3),r)):-1}function Ie(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e-1;return r!==N&&(u=hu(r),u=0>r?go(e+u,0):yo(u,e-1)), +g(t,fe(n,3),u,true)}function Re(t){return t&&t.length?t[0]:N}function We(t){var n=t?t.length:0;return n?t[n-1]:N}function Be(t,n){return t&&t.length&&n&&n.length?or(t,n):t}function Me(t){return t?mo.call(t):t}function Ce(t){if(!t||!t.length)return[];var n=0;return t=f(t,function(t){if(Xe(t))return n=go(t.length,n),true}),k(n,function(n){return l(t,j(n))})}function Le(t,n){if(!t||!t.length)return[];var e=Ce(t);return null==n?e:l(e,function(t){return r(n,N,t)})}function De(t){return t=St(t),t.__chain__=true, +t}function ze(t,n){return n(t)}function Ue(){return this}function $e(t,n){return(Fi(t)?u:No)(t,fe(n,3))}function Fe(t,n){return(Fi(t)?o:Po)(t,fe(n,3))}function Te(t,n){return(Fi(t)?l:Yn)(t,fe(n,3))}function Ne(t,n,r){var e=-1,u=lu(t),o=u.length,i=o-1;for(n=(r?de(t,n,r):n===N)?1:vn(hu(n),0,o);++e=t&&(n=N),r}}function qe(t,n,r){return n=r?N:n,t=re(t,8,N,N,N,N,N,n),t.placeholder=qe.placeholder,t}function Ve(t,n,r){return n=r?N:n,t=re(t,16,N,N,N,N,N,n),t.placeholder=Ve.placeholder,t}function Ke(t,n,r){function e(n){var r=c,e=a;return c=a=N,_=n,s=t.apply(e,r)}function u(t){var r=t-p;return t-=_,p===N||r>=n||0>r||g&&t>=l}function o(){var t=Ii();if(u(t))return i(t);var r,e=ti;r=t-_,t=n-(t-p),r=g?yo(t,l-r):t,h=e(o,r)}function i(t){ +return h=N,d&&c?e(t):(c=a=N,s)}function f(){var t=Ii(),r=u(t);if(c=arguments,a=this,p=t,r){if(h===N)return _=t=p,h=ti(o,n),v?e(t):s;if(g)return h=ti(o,n),e(p)}return h===N&&(h=ti(o,n)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof t!="function")throw new Uu("Expected a function");return n=_u(n)||0,uu(r)&&(v=!!r.leading,l=(g="maxWait"in r)?go(_u(r.maxWait)||0,n):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==N&&Ko(h),_=0,c=p=a=h=N},f.flush=function(){return h===N?s:i(Ii())},f}function Ge(t,n){ +function r(){var e=arguments,u=n?n.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=t.apply(this,e),r.cache=o.set(u,e),e)}if(typeof t!="function"||n&&typeof n!="function")throw new Uu("Expected a function");return r.cache=new(Ge.Cache||Vt),r}function Je(t){if(typeof t!="function")throw new Uu("Expected a function");return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2]); +}return!t.apply(this,n)}}function Ye(t,n){return t===n||t!==t&&n!==n}function He(t){return Xe(t)&&qu.call(t,"callee")&&(!eo.call(t,"callee")||"[object Arguments]"==Gu.call(t))}function Qe(t){return null!=t&&eu(t.length)&&!nu(t)}function Xe(t){return ou(t)&&Qe(t)}function tu(t){return!!ou(t)&&("[object Error]"==Gu.call(t)||typeof t.message=="string"&&typeof t.name=="string")}function nu(t){return t=uu(t)?Gu.call(t):"","[object Function]"==t||"[object GeneratorFunction]"==t}function ru(t){return typeof t=="number"&&t==hu(t); +}function eu(t){return typeof t=="number"&&-1=t}function uu(t){var n=typeof t;return!!t&&("object"==n||"function"==n)}function ou(t){return!!t&&typeof t=="object"}function iu(t){return typeof t=="number"||ou(t)&&"[object Number]"==Gu.call(t)}function fu(t){return!(!ou(t)||"[object Object]"!=Gu.call(t)||C(t))&&(t=to(t),null===t||(t=qu.call(t,"constructor")&&t.constructor,typeof t=="function"&&t instanceof t&&Zu.call(t)==Ku))}function cu(t){return typeof t=="string"||!Fi(t)&&ou(t)&&"[object String]"==Gu.call(t); +}function au(t){return typeof t=="symbol"||ou(t)&&"[object Symbol]"==Gu.call(t)}function lu(t){if(!t)return[];if(Qe(t))return cu(t)?t.match(Bt):Wr(t);if(no&&t[no]){t=t[no]();for(var n,r=[];!(n=t.next()).done;)r.push(n.value);return r}return n=Et(t),("[object Map]"==n?L:"[object Set]"==n?U:mu)(t)}function su(t){return t?(t=_u(t),t===P||t===-P?1.7976931348623157e308*(0>t?-1:1):t===t?t:0):0===t?t:0}function hu(t){t=su(t);var n=t%1;return t===t?n?t-n:t:0}function pu(t){return t?vn(hu(t),0,4294967295):0; +}function _u(t){if(typeof t=="number")return t;if(au(t))return Z;if(uu(t)&&(t=nu(t.valueOf)?t.valueOf():t,t=uu(t)?t+"":t),typeof t!="string")return 0===t?t:+t;t=t.replace(ct,"");var n=xt.test(t);return n||mt.test(t)?Nt(t.slice(2),n?2:8):bt.test(t)?Z:+t}function vu(t){return Br(t,xu(t))}function gu(t){return null==t?"":dr(t)}function du(t,n,r){return t=null==t?N:In(t,n),t===N?r:t}function yu(t,n){return null!=t&&se(t,n,Mn)}function bu(t){return Qe(t)?fn(t):Kn(t)}function xu(t){return Qe(t)?fn(t,true):Gn(t); +}function ju(t,n){return null==t?{}:er(t,Rn(t,xu,Ho),fe(n))}function mu(t){return t?I(t,bu(t)):[]}function wu(t){return xf(gu(t).toLowerCase())}function Au(t){return(t=gu(t))&&t.replace(At,rn).replace(Wt,"")}function Ou(t,n,r){return t=gu(t),n=r?N:n,n===N&&(n=Lt.test(t)?Mt:_t),t.match(n)||[]}function ku(t){return function(){return t}}function Eu(t){return t}function Su(t){return Vn(typeof t=="function"?t:gn(t,true))}function Iu(t,n,r){var e=bu(n),o=Sn(n,e);null!=r||uu(n)&&(o.length||!e.length)||(r=n, +n=t,t=this,o=Sn(n,bu(n)));var i=!(uu(r)&&"chain"in r&&!r.chain),f=nu(t);return u(o,function(r){var e=n[r];t[r]=e,f&&(t.prototype[r]=function(){var n=this.__chain__;if(i||n){var r=t(this.__wrapped__);return(r.__actions__=Wr(this.__actions__)).push({func:e,args:arguments,thisArg:t}),r.__chain__=n,r}return e.apply(t,s([this.value()],arguments))})}),t}function Ru(){}function Wu(t){return ye(t)?j(Ae(t)):ur(t)}function Bu(){return[]}function Mu(){return false}m=m?on.defaults({},m,on.pick(qt,Dt)):qt;var Cu=m.Array,Lu=m.Error,Du=m.Math,zu=m.RegExp,Uu=m.TypeError,$u=m.Array.prototype,Fu=m.Object.prototype,Tu=m.String.prototype,Nu=m["__core-js_shared__"],Pu=function(){ +var t=/[^.]+$/.exec(Nu&&Nu.keys&&Nu.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),Zu=m.Function.prototype.toString,qu=Fu.hasOwnProperty,Vu=0,Ku=Zu.call(Object),Gu=Fu.toString,Ju=qt._,Yu=zu("^"+Zu.call(qu).replace(it,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Hu=Gt?m.Buffer:N,Qu=m.Symbol,Xu=m.Uint8Array,to=D(Object.getPrototypeOf),no=Qu?Qu.iterator:N,ro=m.Object.create,eo=Fu.propertyIsEnumerable,uo=$u.splice,oo=Qu?Qu.isConcatSpreadable:N,io=m.clearTimeout!==qt.clearTimeout&&m.clearTimeout,fo=m.Date&&m.Date.now!==qt.Date.now&&m.Date.now,co=m.setTimeout!==qt.setTimeout&&m.setTimeout,ao=Du.ceil,lo=Du.floor,so=Object.getOwnPropertySymbols,ho=Hu?Hu.isBuffer:N,po=m.isFinite,_o=$u.join,vo=D(Object.keys),go=Du.max,yo=Du.min,bo=m.parseInt,xo=Du.random,jo=Tu.replace,mo=$u.reverse,wo=Tu.split,Ao=le(m,"DataView"),Oo=le(m,"Map"),ko=le(m,"Promise"),Eo=le(m,"Set"),So=le(m,"WeakMap"),Io=le(m.Object,"create"),Ro=function(){ +var t=le(m.Object,"defineProperty"),n=le.name;return n&&2t)&&(t==n.length-1?n.pop():uo.call(n,t,1),true)},Zt.prototype.get=function(t){var n=this.__data__;return t=sn(n,t),0>t?N:n[t][1]},Zt.prototype.has=function(t){return-1e?r.push([t,n]):r[e][1]=n,this},Vt.prototype.clear=function(){this.__data__={hash:new Pt,map:new(Oo||Zt),string:new Pt}},Vt.prototype.delete=function(t){return ce(this,t).delete(t)},Vt.prototype.get=function(t){return ce(this,t).get(t); +},Vt.prototype.has=function(t){return ce(this,t).has(t)},Vt.prototype.set=function(t,n){return ce(this,t).set(t,n),this},Kt.prototype.add=Kt.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Kt.prototype.has=function(t){return this.__data__.has(t)},Jt.prototype.clear=function(){this.__data__=new Zt},Jt.prototype.delete=function(t){return this.__data__.delete(t)},Jt.prototype.get=function(t){return this.__data__.get(t)},Jt.prototype.has=function(t){return this.__data__.has(t); +},Jt.prototype.set=function(t,n){var r=this.__data__;if(r instanceof Zt){if(r=r.__data__,!Oo||199>r.length)return r.push([t,n]),this;r=this.__data__=new Vt(r)}return r.set(t,n),this};var No=Dr(kn),Po=Dr(En,true),Zo=zr(),qo=zr(true),Vo=Wo?function(t,n){return Wo.set(t,n),t}:Eu,Ko=io||function(t){return qt.clearTimeout(t)},Go=Eo&&1/U(new Eo([,-0]))[1]==P?function(t){return new Eo(t)}:Ru,Jo=Wo?function(t){return Wo.get(t)}:Ru,Yo=so?D(so):Bu,Ho=so?function(t){for(var n=[];t;)s(n,Yo(t)),t=to(t);return n}:Bu; +(Ao&&"[object DataView]"!=Et(new Ao(new ArrayBuffer(1)))||Oo&&"[object Map]"!=Et(new Oo)||ko&&"[object Promise]"!=Et(ko.resolve())||Eo&&"[object Set]"!=Et(new Eo)||So&&"[object WeakMap]"!=Et(new So))&&(Et=function(t){var n=Gu.call(t);if(t=(t="[object Object]"==n?t.constructor:N)?Oe(t):N)switch(t){case Co:return"[object DataView]";case Lo:return"[object Map]";case Do:return"[object Promise]";case zo:return"[object Set]";case Uo:return"[object WeakMap]"}return n});var Qo=Nu?nu:Mu,Xo=function(){var t=0,n=0; +return function(r,e){var u=Ii(),o=16-(u-n);if(n=u,0=n}),Fi=Cu.isArray,Ti=Yt?S(Yt):zn,Ni=ho||Mu,Pi=Ht?S(Ht):Un,Zi=Qt?S(Qt):Fn,qi=Xt?S(Xt):Pn,Vi=tn?S(tn):Zn,Ki=nn?S(nn):qn,Gi=Qr(Jn),Ji=Qr(function(t,n){return t<=n}),Yi=Lr(function(t,n){if(Bo||xe(n)||Qe(n))Br(n,bu(n),t);else for(var r in n)qu.call(n,r)&&ln(t,r,n[r]); +}),Hi=Lr(function(t,n){Br(n,xu(n),t)}),Qi=Lr(function(t,n,r,e){Br(n,xu(n),t,e)}),Xi=Lr(function(t,n,r,e){Br(n,bu(n),t,e)}),tf=ar(function(t,n){return _n(t,On(n,1))}),nf=ar(function(t){return t.push(N,cn),r(Qi,N,t)}),rf=ar(function(t){return t.push(N,me),r(cf,N,t)}),ef=Vr(function(t,n,r){t[n]=r},ku(Eu)),uf=Vr(function(t,n,r){qu.call(t,n)?t[n].push(r):t[n]=[r]},fe),of=ar(Dn),ff=Lr(function(t,n,r){Xn(t,n,r)}),cf=Lr(function(t,n,r,e){Xn(t,n,r,e)}),af=ar(function(t,n){return null==t?{}:(n=l(On(n,1),Ae), +rr(t,jn(Rn(t,xu,Ho),n)))}),lf=ar(function(t,n){return null==t?{}:rr(t,l(On(n,1),Ae))}),sf=ne(bu),hf=ne(xu),pf=Fr(function(t,n,r){return n=n.toLowerCase(),t+(r?wu(n):n)}),_f=Fr(function(t,n,r){return t+(r?"-":"")+n.toLowerCase()}),vf=Fr(function(t,n,r){return t+(r?" ":"")+n.toLowerCase()}),gf=$r("toLowerCase"),df=Fr(function(t,n,r){return t+(r?"_":"")+n.toLowerCase()}),yf=Fr(function(t,n,r){return t+(r?" ":"")+xf(n)}),bf=Fr(function(t,n,r){return t+(r?" ":"")+n.toUpperCase()}),xf=$r("toUpperCase"),jf=ar(function(t,n){ +try{return r(t,N,n)}catch(t){return tu(t)?t:new Lu(t)}}),mf=ar(function(t,n){return u(On(n,1),function(n){n=Ae(n),t[n]=Ri(t[n],t)}),t}),wf=Zr(),Af=Zr(true),Of=ar(function(t,n){return function(r){return Dn(r,t,n)}}),kf=ar(function(t,n){return function(r){return Dn(t,r,n)}}),Ef=Gr(l),Sf=Gr(i),If=Gr(_),Rf=Hr(),Wf=Hr(true),Bf=Kr(function(t,n){return t+n},0),Mf=te("ceil"),Cf=Kr(function(t,n){return t/n},1),Lf=te("floor"),Df=Kr(function(t,n){return t*n},1),zf=te("round"),Uf=Kr(function(t,n){return t-n},0);return St.after=function(t,n){ +if(typeof n!="function")throw new Uu("Expected a function");return t=hu(t),function(){if(1>--t)return n.apply(this,arguments)}},St.ary=Pe,St.assign=Yi,St.assignIn=Hi,St.assignInWith=Qi,St.assignWith=Xi,St.at=tf,St.before=Ze,St.bind=Ri,St.bindAll=mf,St.bindKey=Wi,St.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Fi(t)?t:[t]},St.chain=De,St.chunk=function(t,n,r){if(n=(r?de(t,n,r):n===N)?1:go(hu(n),0),r=t?t.length:0,!r||1>n)return[];for(var e=0,u=0,o=Cu(ao(r/n));en?0:n,e)):[]},St.dropRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===N?1:hu(n),n=e-n,sr(t,0,0>n?0:n)):[]},St.dropRightWhile=function(t,n){ +return t&&t.length?br(t,fe(n,3),true,true):[]},St.dropWhile=function(t,n){return t&&t.length?br(t,fe(n,3),true):[]},St.fill=function(t,n,r,e){var u=t?t.length:0;if(!u)return[];for(r&&typeof r!="number"&&de(t,n,r)&&(r=0,e=u),u=t.length,r=hu(r),0>r&&(r=-r>u?0:u+r),e=e===N||e>u?u:hu(e),0>e&&(e+=u),e=r>e?0:pu(e);r>>0,r?(t=gu(t))&&(typeof n=="string"||null!=n&&!qi(n))&&(n=dr(n),""==n&&Ct.test(t))?Or(t.match(Bt),0,r):wo.call(t,n,r):[]},St.spread=function(t,n){if(typeof t!="function")throw new Uu("Expected a function");return n=n===N?0:go(hu(n),0),ar(function(e){ +var u=e[n];return e=Or(e,0,n),u&&s(e,u),r(t,this,e)})},St.tail=function(t){var n=t?t.length:0;return n?sr(t,1,n):[]},St.take=function(t,n,r){return t&&t.length?(n=r||n===N?1:hu(n),sr(t,0,0>n?0:n)):[]},St.takeRight=function(t,n,r){var e=t?t.length:0;return e?(n=r||n===N?1:hu(n),n=e-n,sr(t,0>n?0:n,e)):[]},St.takeRightWhile=function(t,n){return t&&t.length?br(t,fe(n,3),false,true):[]},St.takeWhile=function(t,n){return t&&t.length?br(t,fe(n,3)):[]},St.tap=function(t,n){return n(t),t},St.throttle=function(t,n,r){ +var e=true,u=true;if(typeof t!="function")throw new Uu("Expected a function");return uu(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),Ke(t,n,{leading:e,maxWait:n,trailing:u})},St.thru=ze,St.toArray=lu,St.toPairs=sf,St.toPairsIn=hf,St.toPath=function(t){return Fi(t)?l(t,Ae):au(t)?[t]:Wr(ri(t))},St.toPlainObject=vu,St.transform=function(t,n,r){var e=Fi(t)||Ki(t);if(n=fe(n,4),null==r)if(e||uu(t)){var o=t.constructor;r=e?Fi(t)?new o:[]:nu(o)?bn(to(t)):{}}else r={};return(e?u:kn)(t,function(t,e,u){ +return n(r,t,e,u)}),r},St.unary=function(t){return Pe(t,1)},St.union=si,St.unionBy=hi,St.unionWith=pi,St.uniq=function(t){return t&&t.length?yr(t):[]},St.uniqBy=function(t,n){return t&&t.length?yr(t,fe(n,2)):[]},St.uniqWith=function(t,n){return t&&t.length?yr(t,N,n):[]},St.unset=function(t,n){var r;if(null==t)r=true;else{r=t;var e=n,e=ye(e,r)?[e]:Ar(e);r=we(r,e),e=Ae(We(e)),r=!(null!=r&&qu.call(r,e))||delete r[e]}return r},St.unzip=Ce,St.unzipWith=Le,St.update=function(t,n,r){return null==t?t:lr(t,n,(typeof r=="function"?r:Eu)(In(t,n)),void 0); +},St.updateWith=function(t,n,r,e){return e=typeof e=="function"?e:N,null!=t&&(t=lr(t,n,(typeof r=="function"?r:Eu)(In(t,n)),e)),t},St.values=mu,St.valuesIn=function(t){return null==t?[]:I(t,xu(t))},St.without=_i,St.words=Ou,St.wrap=function(t,n){return n=null==n?Eu:n,Li(n,t)},St.xor=vi,St.xorBy=gi,St.xorWith=di,St.zip=yi,St.zipObject=function(t,n){return mr(t||[],n||[],ln)},St.zipObjectDeep=function(t,n){return mr(t||[],n||[],lr)},St.zipWith=bi,St.entries=sf,St.entriesIn=hf,St.extend=Hi,St.extendWith=Qi, +Iu(St,St),St.add=Bf,St.attempt=jf,St.camelCase=pf,St.capitalize=wu,St.ceil=Mf,St.clamp=function(t,n,r){return r===N&&(r=n,n=N),r!==N&&(r=_u(r),r=r===r?r:0),n!==N&&(n=_u(n),n=n===n?n:0),vn(_u(t),n,r)},St.clone=function(t){return gn(t,false,true)},St.cloneDeep=function(t){return gn(t,true,true)},St.cloneDeepWith=function(t,n){return gn(t,true,true,n)},St.cloneWith=function(t,n){return gn(t,false,true,n)},St.conformsTo=function(t,n){return null==n||yn(t,n,bu(n))},St.deburr=Au,St.defaultTo=function(t,n){return null==t||t!==t?n:t; +},St.divide=Cf,St.endsWith=function(t,n,r){t=gu(t),n=dr(n);var e=t.length,e=r=r===N?e:vn(hu(r),0,e);return r-=n.length,0<=r&&t.slice(r,e)==n},St.eq=Ye,St.escape=function(t){return(t=gu(t))&&Q.test(t)?t.replace(Y,en):t},St.escapeRegExp=function(t){return(t=gu(t))&&ft.test(t)?t.replace(it,"\\$&"):t},St.every=function(t,n,r){var e=Fi(t)?i:mn;return r&&de(t,n,r)&&(n=N),e(t,fe(n,3))},St.find=mi,St.findIndex=Se,St.findKey=function(t,n){return v(t,fe(n,3),kn)},St.findLast=wi,St.findLastIndex=Ie,St.findLastKey=function(t,n){ +return v(t,fe(n,3),En)},St.floor=Lf,St.forEach=$e,St.forEachRight=Fe,St.forIn=function(t,n){return null==t?t:Zo(t,fe(n,3),xu)},St.forInRight=function(t,n){return null==t?t:qo(t,fe(n,3),xu)},St.forOwn=function(t,n){return t&&kn(t,fe(n,3))},St.forOwnRight=function(t,n){return t&&En(t,fe(n,3))},St.get=du,St.gt=Ui,St.gte=$i,St.has=function(t,n){return null!=t&&se(t,n,Bn)},St.hasIn=yu,St.head=Re,St.identity=Eu,St.includes=function(t,n,r,e){return t=Qe(t)?t:mu(t),r=r&&!e?hu(r):0,e=t.length,0>r&&(r=go(e+r,0)), +cu(t)?r<=e&&-1r&&(r=go(e+r,0)),d(t,n,r)):-1},St.inRange=function(t,n,r){return n=su(n),r===N?(r=n,n=0):r=su(r),t=_u(t),t>=yo(n,r)&&t=t},St.isSet=Vi,St.isString=cu,St.isSymbol=au,St.isTypedArray=Ki,St.isUndefined=function(t){return t===N},St.isWeakMap=function(t){return ou(t)&&"[object WeakMap]"==Et(t)},St.isWeakSet=function(t){return ou(t)&&"[object WeakSet]"==Gu.call(t)},St.join=function(t,n){return t?_o.call(t,n):""},St.kebabCase=_f,St.last=We,St.lastIndexOf=function(t,n,r){var e=t?t.length:0;if(!e)return-1;var u=e;if(r!==N&&(u=hu(r), +u=(0>u?go(e+u,0):yo(u,e-1))+1),n!==n)return g(t,b,u-1,true);for(;u--;)if(t[u]===n)return u;return-1},St.lowerCase=vf,St.lowerFirst=gf,St.lt=Gi,St.lte=Ji,St.max=function(t){return t&&t.length?wn(t,Eu,Wn):N},St.maxBy=function(t,n){return t&&t.length?wn(t,fe(n,2),Wn):N},St.mean=function(t){return x(t,Eu)},St.meanBy=function(t,n){return x(t,fe(n,2))},St.min=function(t){return t&&t.length?wn(t,Eu,Jn):N},St.minBy=function(t,n){return t&&t.length?wn(t,fe(n,2),Jn):N},St.stubArray=Bu,St.stubFalse=Mu,St.stubObject=function(){ +return{}},St.stubString=function(){return""},St.stubTrue=function(){return true},St.multiply=Df,St.nth=function(t,n){return t&&t.length?tr(t,hu(n)):N},St.noConflict=function(){return qt._===this&&(qt._=Ju),this},St.noop=Ru,St.now=Ii,St.pad=function(t,n,r){t=gu(t);var e=(n=hu(n))?F(t):0;return!n||e>=n?t:(n=(n-e)/2,Jr(lo(n),r)+t+Jr(ao(n),r))},St.padEnd=function(t,n,r){t=gu(t);var e=(n=hu(n))?F(t):0;return n&&en){var e=t;t=n,n=e}return r||t%1||n%1?(r=xo(),yo(t+r*(n-t+Tt("1e-"+((r+"").length-1))),n)):fr(t,n)},St.reduce=function(t,n,r){var e=Fi(t)?h:w,u=3>arguments.length;return e(t,fe(n,4),r,u,No); +},St.reduceRight=function(t,n,r){var e=Fi(t)?p:w,u=3>arguments.length;return e(t,fe(n,4),r,u,Po)},St.repeat=function(t,n,r){return n=(r?de(t,n,r):n===N)?1:hu(n),cr(gu(t),n)},St.replace=function(){var t=arguments,n=gu(t[0]);return 3>t.length?n:jo.call(n,t[1],t[2])},St.result=function(t,n,r){n=ye(n,t)?[n]:Ar(n);var e=-1,u=n.length;for(u||(t=N,u=1);++et||9007199254740991=o)return t;if(o=r-F(e),1>o)return e;if(r=i?Or(i,0,o).join(""):t.slice(0,o),u===N)return r+e; +if(i&&(o+=r.length-o),qi(u)){if(t.slice(o).search(u)){var f=r;for(u.global||(u=zu(u.source,gu(dt.exec(u))+"g")),u.lastIndex=0;i=u.exec(f);)var c=i.index;r=r.slice(0,c===N?o:c)}}else t.indexOf(dr(u),o)!=o&&(u=r.lastIndexOf(u),-1u.__dir__?"Right":"")}),u},Ft.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse(); +}}),u(["filter","map","takeWhile"],function(t,n){var r=n+1,e=1==r||3==r;Ft.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:fe(t,3),type:r}),n.__filtered__=n.__filtered__||e,n}}),u(["head","last"],function(t,n){var r="take"+(n?"Right":"");Ft.prototype[t]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(t,n){var r="drop"+(n?"":"Right");Ft.prototype[t]=function(){return this.__filtered__?new Ft(this):this[r](1)}}),Ft.prototype.compact=function(){ +return this.filter(Eu)},Ft.prototype.find=function(t){return this.filter(t).head()},Ft.prototype.findLast=function(t){return this.reverse().find(t)},Ft.prototype.invokeMap=ar(function(t,n){return typeof t=="function"?new Ft(this):this.map(function(r){return Dn(r,t,n)})}),Ft.prototype.reject=function(t){return this.filter(Je(fe(t)))},Ft.prototype.slice=function(t,n){t=hu(t);var r=this;return r.__filtered__&&(0n)?new Ft(r):(0>t?r=r.takeRight(-t):t&&(r=r.drop(t)),n!==N&&(n=hu(n),r=0>n?r.dropRight(-n):r.take(n-t)), +r)},Ft.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Ft.prototype.toArray=function(){return this.take(4294967295)},kn(Ft.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),e=/^(?:head|last)$/.test(n),u=St[e?"take"+("last"==n?"Right":""):n],o=e||/^find/.test(n);u&&(St.prototype[n]=function(){function n(t){return t=u.apply(St,s([t],f)),e&&h?t[0]:t}var i=this.__wrapped__,f=e?[1]:arguments,c=i instanceof Ft,a=f[0],l=c||Fi(i);l&&r&&typeof a=="function"&&1!=a.length&&(c=l=false); +var h=this.__chain__,p=!!this.__actions__.length,a=o&&!h,c=c&&!p;return!o&&l?(i=c?i:new Ft(this),i=t.apply(i,f),i.__actions__.push({func:ze,args:[n],thisArg:N}),new $t(i,h)):a&&c?t.apply(this,f):(i=this.thru(n),a?e?i.value()[0]:i.value():i)})}),u("pop push shift sort splice unshift".split(" "),function(t){var n=$u[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);St.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){var u=this.value();return n.apply(Fi(u)?u:[],t); +}return this[r](function(r){return n.apply(Fi(r)?r:[],t)})}}),kn(Ft.prototype,function(t,n){var r=St[n];if(r){var e=r.name+"";(Mo[e]||(Mo[e]=[])).push({name:n,func:r})}}),Mo[qr(N,2).name]=[{name:"wrapper",func:N}],Ft.prototype.clone=function(){var t=new Ft(this.__wrapped__);return t.__actions__=Wr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Wr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Wr(this.__views__),t},Ft.prototype.reverse=function(){ +if(this.__filtered__){var t=new Ft(this);t.__dir__=-1,t.__filtered__=true}else t=this.clone(),t.__dir__*=-1;return t},Ft.prototype.value=function(){var t,n=this.__wrapped__.value(),r=this.__dir__,e=Fi(n),u=0>r,o=e?n.length:0;t=o;for(var i=this.__views__,f=0,c=-1,a=i.length;++co||o==t&&a==t)return xr(n,this.__actions__);e=[];t:for(;t--&&c=this.__values__.length,n=t?N:this.__values__[this.__index__++]; +return{done:t,value:n}},St.prototype.plant=function(t){for(var n,r=this;r instanceof It;){var e=Ee(r);e.__index__=0,e.__values__=N,n?u.__wrapped__=e:n=e;var u=e,r=r.__wrapped__}return u.__wrapped__=t,n},St.prototype.reverse=function(){var t=this.__wrapped__;return t instanceof Ft?(this.__actions__.length&&(t=new Ft(this)),t=t.reverse(),t.__actions__.push({func:ze,args:[Me],thisArg:N}),new $t(t,this.__chain__)):this.thru(Me)},St.prototype.toJSON=St.prototype.valueOf=St.prototype.value=function(){return xr(this.__wrapped__,this.__actions__); +},St.prototype.first=St.prototype.head,no&&(St.prototype[no]=Ue),St}var N,P=1/0,Z=NaN,q=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],V=/\b__p\+='';/g,K=/\b(__p\+=)''\+/g,G=/(__e\(.*?\)|\b__t\))\+'';/g,J=/&(?:amp|lt|gt|quot|#39|#96);/g,Y=/[&<>"'`]/g,H=RegExp(J.source),Q=RegExp(Y.source),X=/<%-([\s\S]+?)%>/g,tt=/<%([\s\S]+?)%>/g,nt=/<%=([\s\S]+?)%>/g,rt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,et=/^\w*$/,ut=/^\./,ot=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,it=/[\\^$.*+?()[\]{}|]/g,ft=RegExp(it.source),ct=/^\s+|\s+$/g,at=/^\s+/,lt=/\s+$/,st=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ht=/\{\n\/\* \[wrapped with (.+)\] \*/,pt=/,? & /,_t=/[a-zA-Z0-9]+/g,vt=/\\(\\)?/g,gt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,dt=/\w*$/,yt=/^0x/i,bt=/^[-+]0x[0-9a-f]+$/i,xt=/^0b[01]+$/i,jt=/^\[object .+?Constructor\]$/,mt=/^0o[0-7]+$/i,wt=/^(?:0|[1-9]\d*)$/,At=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Ot=/($^)/,kt=/['\n\r\u2028\u2029\\]/g,Et="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*",St="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+Et,It="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",Rt=RegExp("['\u2019]","g"),Wt=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]","g"),Bt=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+It+Et,"g"),Mt=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d+",St].join("|"),"g"),Ct=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),Lt=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Dt="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),zt={}; +zt["[object Float32Array]"]=zt["[object Float64Array]"]=zt["[object Int8Array]"]=zt["[object Int16Array]"]=zt["[object Int32Array]"]=zt["[object Uint8Array]"]=zt["[object Uint8ClampedArray]"]=zt["[object Uint16Array]"]=zt["[object Uint32Array]"]=true,zt["[object Arguments]"]=zt["[object Array]"]=zt["[object ArrayBuffer]"]=zt["[object Boolean]"]=zt["[object DataView]"]=zt["[object Date]"]=zt["[object Error]"]=zt["[object Function]"]=zt["[object Map]"]=zt["[object Number]"]=zt["[object Object]"]=zt["[object RegExp]"]=zt["[object Set]"]=zt["[object String]"]=zt["[object WeakMap]"]=false; +var Ut={};Ut["[object Arguments]"]=Ut["[object Array]"]=Ut["[object ArrayBuffer]"]=Ut["[object DataView]"]=Ut["[object Boolean]"]=Ut["[object Date]"]=Ut["[object Float32Array]"]=Ut["[object Float64Array]"]=Ut["[object Int8Array]"]=Ut["[object Int16Array]"]=Ut["[object Int32Array]"]=Ut["[object Map]"]=Ut["[object Number]"]=Ut["[object Object]"]=Ut["[object RegExp]"]=Ut["[object Set]"]=Ut["[object String]"]=Ut["[object Symbol]"]=Ut["[object Uint8Array]"]=Ut["[object Uint8ClampedArray]"]=Ut["[object Uint16Array]"]=Ut["[object Uint32Array]"]=true, +Ut["[object Error]"]=Ut["[object Function]"]=Ut["[object WeakMap]"]=false;var $t,Ft={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Tt=parseFloat,Nt=parseInt,Pt=typeof global=="object"&&global&&global.Object===Object&&global,Zt=typeof self=="object"&&self&&self.Object===Object&&self,qt=Pt||Zt||Function("return this")(),Vt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Kt=Vt&&typeof module=="object"&&module&&!module.nodeType&&module,Gt=Kt&&Kt.exports===Vt,Jt=Gt&&Pt.g; +t:{try{$t=Jt&&Jt.f("util");break t}catch(t){}$t=void 0}var Yt=$t&&$t.isArrayBuffer,Ht=$t&&$t.isDate,Qt=$t&&$t.isMap,Xt=$t&&$t.isRegExp,tn=$t&&$t.isSet,nn=$t&&$t.isTypedArray,rn=m({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i", +"\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"}),en=m({"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"}),un=m({"&":"&","<":"<",">":">",""":'"',"'":"'", +"`":"`"}),on=T();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(qt._=on, define(function(){return on})):Kt?((Kt.exports=on)._=on,Vt._=on):qt._=on}).call(this); \ No newline at end of file diff --git a/dist/mapping.fp.js b/dist/mapping.fp.js index 4d9c62b037..9f4ad2c3f2 100644 --- a/dist/mapping.fp.js +++ b/dist/mapping.fp.js @@ -129,10 +129,10 @@ return /******/ (function(modules) { // webpackBootstrap '1': [ 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create', 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow', - 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', - 'mergeAll', 'methodOf', 'mixin', 'over', 'overEvery', 'overSome', 'rest', - 'reverse', 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', - 'trimStart', 'uniqueId', 'words', 'zipAll' + 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll', + 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse', + 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart', + 'uniqueId', 'words', 'zipAll' ], '2': [ 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith', diff --git a/doc/README.md b/doc/README.md index 9a52cbbabf..815c7bc888 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,4 +1,4 @@ -# lodash v4.14.1 +# lodash v4.14.2 @@ -414,8 +414,8 @@ -### `_.chunk(array, [size=1])` -[#](#_chunkarray-size1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6322 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.chunk "See the npm package") [Ⓣ][1] +

_.chunk(array, [size=1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6350 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.chunk "See the npm package") [Ⓣ][1] Creates an array of elements split into groups the length of `size`. If `array` can't be split evenly, the final chunk will be the remaining @@ -444,8 +444,8 @@ _.chunk(['a', 'b', 'c', 'd'], 3); -### `_.compact(array)` -[#](#_compactarray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6357 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.compact "See the npm package") [Ⓣ][1] +

_.compact(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6385 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.compact "See the npm package") [Ⓣ][1] Creates an array with all falsey values removed. The values `false`, `null`, `0`, `""`, `undefined`, and `NaN` are falsey. @@ -469,8 +469,8 @@ _.compact([0, 1, false, 2, '', 3]); -### `_.concat(array, [values])` -[#](#_concatarray-values) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6394 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.concat "See the npm package") [Ⓣ][1] +

_.concat(array, [values])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6422 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.concat "See the npm package") [Ⓣ][1] Creates a new array concatenating `array` with any additional arrays and/or values. @@ -501,11 +501,11 @@ console.log(array); -### `_.difference(array, [values])` -[#](#_differencearray-values) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6429 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.difference "See the npm package") [Ⓣ][1] +

_.difference(array, [values])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6457 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.difference "See the npm package") [Ⓣ][1] Creates an array of `array` values not included in the other given arrays -using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) +using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) for equality comparisons. The order of result values is determined by the order they occur in the first array.
@@ -532,8 +532,8 @@ _.difference([2, 1], [2, 3]); -### `_.differenceBy(array, [values], [iteratee=_.identity])` -[#](#_differencebyarray-values-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6460 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.differenceby "See the npm package") [Ⓣ][1] +

_.differenceBy(array, [values], [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6488 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.differenceby "See the npm package") [Ⓣ][1] This method is like `_.difference` except that it accepts `iteratee` which is invoked for each element of `array` and `values` to generate the criterion @@ -568,8 +568,8 @@ _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); -### `_.differenceWith(array, [values], [comparator])` -[#](#_differencewitharray-values-comparator) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6493 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.differencewith "See the npm package") [Ⓣ][1] +

_.differenceWith(array, [values], [comparator])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6521 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.differencewith "See the npm package") [Ⓣ][1] This method is like `_.difference` except that it accepts `comparator` which is invoked to compare elements of `array` to `values`. Result values @@ -602,8 +602,8 @@ _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); -### `_.drop(array, [n=1])` -[#](#_droparray-n1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6528 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.drop "See the npm package") [Ⓣ][1] +

_.drop(array, [n=1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6556 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.drop "See the npm package") [Ⓣ][1] Creates a slice of `array` with `n` elements dropped from the beginning. @@ -636,8 +636,8 @@ _.drop([1, 2, 3], 0); -### `_.dropRight(array, [n=1])` -[#](#_droprightarray-n1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6562 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.dropright "See the npm package") [Ⓣ][1] +

_.dropRight(array, [n=1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6590 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.dropright "See the npm package") [Ⓣ][1] Creates a slice of `array` with `n` elements dropped from the end. @@ -670,8 +670,8 @@ _.dropRight([1, 2, 3], 0); -### `_.dropRightWhile(array, [predicate=_.identity])` -[#](#_droprightwhilearray-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6607 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.droprightwhile "See the npm package") [Ⓣ][1] +

_.dropRightWhile(array, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6635 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.droprightwhile "See the npm package") [Ⓣ][1] Creates a slice of `array` excluding elements dropped from the end. Elements are dropped until `predicate` returns falsey. The predicate is @@ -715,8 +715,8 @@ _.dropRightWhile(users, 'active'); -### `_.dropWhile(array, [predicate=_.identity])` -[#](#_dropwhilearray-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6649 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.dropwhile "See the npm package") [Ⓣ][1] +

_.dropWhile(array, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6677 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.dropwhile "See the npm package") [Ⓣ][1] Creates a slice of `array` excluding elements dropped from the beginning. Elements are dropped until `predicate` returns falsey. The predicate is @@ -760,8 +760,8 @@ _.dropWhile(users, 'active'); -### `_.fill(array, value, [start=0], [end=array.length])` -[#](#_fillarray-value-start0-endarraylength) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6684 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.fill "See the npm package") [Ⓣ][1] +

_.fill(array, value, [start=0], [end=array.length])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6712 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.fill "See the npm package") [Ⓣ][1] Fills elements of `array` with `value` from `start` up to, but not including, `end`. @@ -800,8 +800,8 @@ _.fill([4, 6, 8, 10], '*', 1, 3); -### `_.findIndex(array, [predicate=_.identity], [fromIndex=0])` -[#](#_findindexarray-predicate_identity-fromindex0) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6732 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findindex "See the npm package") [Ⓣ][1] +

_.findIndex(array, [predicate=_.identity], [fromIndex=0])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6760 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findindex "See the npm package") [Ⓣ][1] This method is like `_.find` except that it returns the index of the first element `predicate` returns truthy for instead of the element itself. @@ -845,8 +845,8 @@ _.findIndex(users, 'active'); -### `_.findLastIndex(array, [predicate=_.identity], [fromIndex=array.length-1])` -[#](#_findlastindexarray-predicate_identity-fromindexarraylength-1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6780 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findlastindex "See the npm package") [Ⓣ][1] +

_.findLastIndex(array, [predicate=_.identity], [fromIndex=array.length-1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6808 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findlastindex "See the npm package") [Ⓣ][1] This method is like `_.findIndex` except that it iterates over elements of `collection` from right to left. @@ -890,8 +890,8 @@ _.findLastIndex(users, 'active'); -### `_.flatten(array)` -[#](#_flattenarray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6809 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatten "See the npm package") [Ⓣ][1] +

_.flatten(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6837 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatten "See the npm package") [Ⓣ][1] Flattens `array` a single level deep. @@ -914,8 +914,8 @@ _.flatten([1, [2, [3, [4]], 5]]); -### `_.flattenDeep(array)` -[#](#_flattendeeparray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6828 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flattendeep "See the npm package") [Ⓣ][1] +

_.flattenDeep(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6856 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flattendeep "See the npm package") [Ⓣ][1] Recursively flattens `array`. @@ -938,8 +938,8 @@ _.flattenDeep([1, [2, [3, [4]], 5]]); -### `_.flattenDepth(array, [depth=1])` -[#](#_flattendeptharray-depth1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6853 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flattendepth "See the npm package") [Ⓣ][1] +

_.flattenDepth(array, [depth=1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6881 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flattendepth "See the npm package") [Ⓣ][1] Recursively flatten `array` up to `depth` times. @@ -968,8 +968,8 @@ _.flattenDepth(array, 2); -### `_.fromPairs(pairs)` -[#](#_frompairspairs) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6877 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.frompairs "See the npm package") [Ⓣ][1] +

_.fromPairs(pairs)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6905 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.frompairs "See the npm package") [Ⓣ][1] The inverse of `_.toPairs`; this method returns an object composed from key-value `pairs`. @@ -993,8 +993,8 @@ _.fromPairs([['a', 1], ['b', 2]]); -### `_.head(array)` -[#](#_headarray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6907 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.head "See the npm package") [Ⓣ][1] +

_.head(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6935 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.head "See the npm package") [Ⓣ][1] Gets the first element of `array`. @@ -1023,11 +1023,11 @@ _.head([]); -### `_.indexOf(array, value, [fromIndex=0])` -[#](#_indexofarray-value-fromindex0) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6934 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.indexof "See the npm package") [Ⓣ][1] +

_.indexOf(array, value, [fromIndex=0])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6962 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.indexof "See the npm package") [Ⓣ][1] Gets the index at which the first occurrence of `value` is found in `array` -using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) +using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) for equality comparisons. If `fromIndex` is negative, it's used as the offset from the end of `array`. @@ -1056,8 +1056,8 @@ _.indexOf([1, 2, 1, 2], 2, 2); -### `_.initial(array)` -[#](#_initialarray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6960 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.initial "See the npm package") [Ⓣ][1] +

_.initial(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L6988 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.initial "See the npm package") [Ⓣ][1] Gets all but the last element of `array`. @@ -1080,11 +1080,11 @@ _.initial([1, 2, 3]); -### `_.intersection([arrays])` -[#](#_intersectionarrays) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L6981 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.intersection "See the npm package") [Ⓣ][1] +

_.intersection([arrays])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7010 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.intersection "See the npm package") [Ⓣ][1] Creates an array of unique values that are included in all given arrays -using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) +using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) for equality comparisons. The order of result values is determined by the order they occur in the first array. @@ -1107,8 +1107,8 @@ _.intersection([2, 1], [2, 3]); -### `_.intersectionBy([arrays], [iteratee=_.identity])` -[#](#_intersectionbyarrays-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7010 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.intersectionby "See the npm package") [Ⓣ][1] +

_.intersectionBy([arrays], [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7039 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.intersectionby "See the npm package") [Ⓣ][1] This method is like `_.intersection` except that it accepts `iteratee` which is invoked for each element of each `arrays` to generate the criterion @@ -1139,8 +1139,8 @@ _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); -### `_.intersectionWith([arrays], [comparator])` -[#](#_intersectionwitharrays-comparator) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7045 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.intersectionwith "See the npm package") [Ⓣ][1] +

_.intersectionWith([arrays], [comparator])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7074 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.intersectionwith "See the npm package") [Ⓣ][1] This method is like `_.intersection` except that it accepts `comparator` which is invoked to compare elements of `arrays`. Result values are chosen @@ -1170,8 +1170,8 @@ _.intersectionWith(objects, others, _.isEqual); -### `_.join(array, [separator=','])` -[#](#_joinarray-separator-) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7074 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.join "See the npm package") [Ⓣ][1] +

_.join(array, [separator=','])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7103 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.join "See the npm package") [Ⓣ][1] Converts all elements in `array` into a string separated by `separator`. @@ -1195,8 +1195,8 @@ _.join(['a', 'b', 'c'], '~'); -### `_.last(array)` -[#](#_lastarray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7092 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.last "See the npm package") [Ⓣ][1] +

_.last(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7121 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.last "See the npm package") [Ⓣ][1] Gets the last element of `array`. @@ -1219,8 +1219,8 @@ _.last([1, 2, 3]); -### `_.lastIndexOf(array, value, [fromIndex=array.length-1])` -[#](#_lastindexofarray-value-fromindexarraylength-1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7118 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lastindexof "See the npm package") [Ⓣ][1] +

_.lastIndexOf(array, value, [fromIndex=array.length-1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7147 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lastindexof "See the npm package") [Ⓣ][1] This method is like `_.indexOf` except that it iterates over elements of `array` from right to left. @@ -1250,8 +1250,8 @@ _.lastIndexOf([1, 2, 1, 2], 2, 2); -### `_.nth(array, [n=0])` -[#](#_ntharray-n0) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7164 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.nth "See the npm package") [Ⓣ][1] +

_.nth(array, [n=0])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7193 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.nth "See the npm package") [Ⓣ][1] Gets the element at index `n` of `array`. If `n` is negative, the nth element from the end is returned. @@ -1281,11 +1281,11 @@ _.nth(array, -2); -### `_.pull(array, [values])` -[#](#_pullarray-values) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7191 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pull "See the npm package") [Ⓣ][1] +

_.pull(array, [values])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7220 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pull "See the npm package") [Ⓣ][1] Removes all given values from `array` using -[`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) +[`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) for equality comparisons.

@@ -1315,8 +1315,8 @@ console.log(array); -### `_.pullAll(array, values)` -[#](#_pullallarray-values) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7213 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullall "See the npm package") [Ⓣ][1] +

_.pullAll(array, values)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7242 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullall "See the npm package") [Ⓣ][1] This method is like `_.pull` except that it accepts an array of values to remove.
@@ -1346,8 +1346,8 @@ console.log(array); -### `_.pullAllBy(array, values, [iteratee=_.identity])` -[#](#_pullallbyarray-values-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7243 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullallby "See the npm package") [Ⓣ][1] +

_.pullAllBy(array, values, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7272 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullallby "See the npm package") [Ⓣ][1] This method is like `_.pullAll` except that it accepts `iteratee` which is invoked for each element of `array` and `values` to generate the criterion @@ -1380,8 +1380,8 @@ console.log(array); -### `_.pullAllWith(array, values, [comparator])` -[#](#_pullallwitharray-values-comparator) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7272 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullallwith "See the npm package") [Ⓣ][1] +

_.pullAllWith(array, values, [comparator])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7301 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullallwith "See the npm package") [Ⓣ][1] This method is like `_.pullAll` except that it accepts `comparator` which is invoked to compare elements of `array` to `values`. The comparator is @@ -1414,8 +1414,8 @@ console.log(array); -### `_.pullAt(array, [indexes])` -[#](#_pullatarray-indexes) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7302 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullat "See the npm package") [Ⓣ][1] +

_.pullAt(array, [indexes])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7331 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pullat "See the npm package") [Ⓣ][1] Removes elements from `array` corresponding to `indexes` and returns an array of removed elements. @@ -1449,8 +1449,8 @@ console.log(pulled); -### `_.remove(array, [predicate=_.identity])` -[#](#_removearray-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7344 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.remove "See the npm package") [Ⓣ][1] +

_.remove(array, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7373 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.remove "See the npm package") [Ⓣ][1] Removes all elements from `array` that `predicate` returns truthy for and returns an array of the removed elements. The predicate is invoked @@ -1488,8 +1488,8 @@ console.log(evens); -### `_.reverse(array)` -[#](#_reversearray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7388 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reverse "See the npm package") [Ⓣ][1] +

_.reverse(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7417 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reverse "See the npm package") [Ⓣ][1] Reverses `array` so that the first element becomes the last, the second element becomes the second to last, and so on. @@ -1522,8 +1522,8 @@ console.log(array); -### `_.slice(array, [start=0], [end=array.length])` -[#](#_slicearray-start0-endarraylength) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7408 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.slice "See the npm package") [Ⓣ][1] +

_.slice(array, [start=0], [end=array.length])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7437 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.slice "See the npm package") [Ⓣ][1] Creates a slice of `array` from `start` up to, but not including, `end`.
@@ -1548,8 +1548,8 @@ returned. -### `_.sortedIndex(array, value)` -[#](#_sortedindexarray-value) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7441 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedindex "See the npm package") [Ⓣ][1] +

_.sortedIndex(array, value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7470 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedindex "See the npm package") [Ⓣ][1] Uses a binary search to determine the lowest index at which `value` should be inserted into `array` in order to maintain its sort order. @@ -1574,8 +1574,8 @@ _.sortedIndex([30, 50], 40); -### `_.sortedIndexBy(array, value, [iteratee=_.identity])` -[#](#_sortedindexbyarray-value-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7471 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedindexby "See the npm package") [Ⓣ][1] +

_.sortedIndexBy(array, value, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7500 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedindexby "See the npm package") [Ⓣ][1] This method is like `_.sortedIndex` except that it accepts `iteratee` which is invoked for `value` and each element of `array` to compute their @@ -1608,8 +1608,8 @@ _.sortedIndexBy(objects, { 'x': 4 }, 'x'); -### `_.sortedIndexOf(array, value)` -[#](#_sortedindexofarray-value) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7491 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedindexof "See the npm package") [Ⓣ][1] +

_.sortedIndexOf(array, value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7520 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedindexof "See the npm package") [Ⓣ][1] This method is like `_.indexOf` except that it performs a binary search on a sorted `array`. @@ -1634,8 +1634,8 @@ _.sortedIndexOf([4, 5, 5, 5, 6], 5); -### `_.sortedLastIndex(array, value)` -[#](#_sortedlastindexarray-value) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7520 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedlastindex "See the npm package") [Ⓣ][1] +

_.sortedLastIndex(array, value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7549 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedlastindex "See the npm package") [Ⓣ][1] This method is like `_.sortedIndex` except that it returns the highest index at which `value` should be inserted into `array` in order to @@ -1661,8 +1661,8 @@ _.sortedLastIndex([4, 5, 5, 5, 6], 5); -### `_.sortedLastIndexBy(array, value, [iteratee=_.identity])` -[#](#_sortedlastindexbyarray-value-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7550 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedlastindexby "See the npm package") [Ⓣ][1] +

_.sortedLastIndexBy(array, value, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7579 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedlastindexby "See the npm package") [Ⓣ][1] This method is like `_.sortedLastIndex` except that it accepts `iteratee` which is invoked for `value` and each element of `array` to compute their @@ -1695,8 +1695,8 @@ _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); -### `_.sortedLastIndexOf(array, value)` -[#](#_sortedlastindexofarray-value) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7570 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedlastindexof "See the npm package") [Ⓣ][1] +

_.sortedLastIndexOf(array, value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7599 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortedlastindexof "See the npm package") [Ⓣ][1] This method is like `_.lastIndexOf` except that it performs a binary search on a sorted `array`. @@ -1721,8 +1721,8 @@ _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); -### `_.sortedUniq(array)` -[#](#_sorteduniqarray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7596 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sorteduniq "See the npm package") [Ⓣ][1] +

_.sortedUniq(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7625 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sorteduniq "See the npm package") [Ⓣ][1] This method is like `_.uniq` except that it's designed and optimized for sorted arrays. @@ -1746,8 +1746,8 @@ _.sortedUniq([1, 1, 2]); -### `_.sortedUniqBy(array, [iteratee])` -[#](#_sorteduniqbyarray-iteratee) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7618 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sorteduniqby "See the npm package") [Ⓣ][1] +

_.sortedUniqBy(array, [iteratee])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7647 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sorteduniqby "See the npm package") [Ⓣ][1] This method is like `_.uniqBy` except that it's designed and optimized for sorted arrays. @@ -1772,8 +1772,8 @@ _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); -### `_.tail(array)` -[#](#_tailarray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7638 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tail "See the npm package") [Ⓣ][1] +

_.tail(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7667 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tail "See the npm package") [Ⓣ][1] Gets all but the first element of `array`. @@ -1796,8 +1796,8 @@ _.tail([1, 2, 3]); -### `_.take(array, [n=1])` -[#](#_takearray-n1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7667 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.take "See the npm package") [Ⓣ][1] +

_.take(array, [n=1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7697 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.take "See the npm package") [Ⓣ][1] Creates a slice of `array` with `n` elements taken from the beginning. @@ -1830,8 +1830,8 @@ _.take([1, 2, 3], 0); -### `_.takeRight(array, [n=1])` -[#](#_takerightarray-n1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7700 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.takeright "See the npm package") [Ⓣ][1] +

_.takeRight(array, [n=1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7730 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.takeright "See the npm package") [Ⓣ][1] Creates a slice of `array` with `n` elements taken from the end. @@ -1864,8 +1864,8 @@ _.takeRight([1, 2, 3], 0); -### `_.takeRightWhile(array, [predicate=_.identity])` -[#](#_takerightwhilearray-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7746 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.takerightwhile "See the npm package") [Ⓣ][1] +

_.takeRightWhile(array, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7776 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.takerightwhile "See the npm package") [Ⓣ][1] Creates a slice of `array` with elements taken from the end. Elements are taken until `predicate` returns falsey. The predicate is invoked with @@ -1909,8 +1909,8 @@ _.takeRightWhile(users, 'active'); -### `_.takeWhile(array, [predicate=_.identity])` -[#](#_takewhilearray-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7788 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.takewhile "See the npm package") [Ⓣ][1] +

_.takeWhile(array, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7818 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.takewhile "See the npm package") [Ⓣ][1] Creates a slice of `array` with elements taken from the beginning. Elements are taken until `predicate` returns falsey. The predicate is invoked with @@ -1954,11 +1954,11 @@ _.takeWhile(users, 'active'); -### `_.union([arrays])` -[#](#_unionarrays) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7810 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.union "See the npm package") [Ⓣ][1] +

_.union([arrays])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7840 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.union "See the npm package") [Ⓣ][1] Creates an array of unique values, in order, from all given arrays using -[`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) +[`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) for equality comparisons. #### Since @@ -1980,8 +1980,8 @@ _.union([2], [1, 2]); -### `_.unionBy([arrays], [iteratee=_.identity])` -[#](#_unionbyarrays-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7838 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unionby "See the npm package") [Ⓣ][1] +

_.unionBy([arrays], [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7868 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unionby "See the npm package") [Ⓣ][1] This method is like `_.union` except that it accepts `iteratee` which is invoked for each element of each `arrays` to generate the criterion by @@ -2013,8 +2013,8 @@ _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); -### `_.unionWith([arrays], [comparator])` -[#](#_unionwitharrays-comparator) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7867 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unionwith "See the npm package") [Ⓣ][1] +

_.unionWith([arrays], [comparator])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7897 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unionwith "See the npm package") [Ⓣ][1] This method is like `_.union` except that it accepts `comparator` which is invoked to compare elements of `arrays`. Result values are chosen from @@ -2044,11 +2044,11 @@ _.unionWith(objects, others, _.isEqual); -### `_.uniq(array)` -[#](#_uniqarray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7892 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniq "See the npm package") [Ⓣ][1] +

_.uniq(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7922 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniq "See the npm package") [Ⓣ][1] Creates a duplicate-free version of an array, using -[`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) +[`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) for equality comparisons, in which only the first occurrence of each element is kept. @@ -2071,8 +2071,8 @@ _.uniq([2, 1, 2]); -### `_.uniqBy(array, [iteratee=_.identity])` -[#](#_uniqbyarray-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7920 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniqby "See the npm package") [Ⓣ][1] +

_.uniqBy(array, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7950 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniqby "See the npm package") [Ⓣ][1] This method is like `_.uniq` except that it accepts `iteratee` which is invoked for each element in `array` to generate the criterion by which @@ -2102,8 +2102,8 @@ _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); -### `_.uniqWith(array, [comparator])` -[#](#_uniqwitharray-comparator) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7945 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniqwith "See the npm package") [Ⓣ][1] +

_.uniqWith(array, [comparator])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L7975 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniqwith "See the npm package") [Ⓣ][1] This method is like `_.uniq` except that it accepts `comparator` which is invoked to compare elements of `array`. The comparator is invoked with @@ -2131,8 +2131,8 @@ _.uniqWith(objects, _.isEqual); -### `_.unzip(array)` -[#](#_unziparray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L7970 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unzip "See the npm package") [Ⓣ][1] +

_.unzip(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8000 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unzip "See the npm package") [Ⓣ][1] This method is like `_.zip` except that it accepts an array of grouped elements and creates an array regrouping the elements to their pre-zip @@ -2160,8 +2160,8 @@ _.unzip(zipped); -### `_.unzipWith(array, [iteratee=_.identity])` -[#](#_unzipwitharray-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8007 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unzipwith "See the npm package") [Ⓣ][1] +

_.unzipWith(array, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8037 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unzipwith "See the npm package") [Ⓣ][1] This method is like `_.unzip` except that it accepts `iteratee` to specify how regrouped values should be combined. The iteratee is invoked with the @@ -2190,11 +2190,11 @@ _.unzipWith(zipped, _.add); -### `_.without(array, [values])` -[#](#_withoutarray-values) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8040 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.without "See the npm package") [Ⓣ][1] +

_.without(array, [values])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8070 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.without "See the npm package") [Ⓣ][1] Creates an array excluding all given values using -[`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) +[`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) for equality comparisons.

@@ -2220,8 +2220,8 @@ _.without([2, 1, 2, 3], 1, 2); -### `_.xor([arrays])` -[#](#_xorarrays) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8064 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.xor "See the npm package") [Ⓣ][1] +

_.xor([arrays])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8094 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.xor "See the npm package") [Ⓣ][1] Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) @@ -2247,8 +2247,8 @@ _.xor([2, 1], [2, 3]); -### `_.xorBy([arrays], [iteratee=_.identity])` -[#](#_xorbyarrays-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8091 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.xorby "See the npm package") [Ⓣ][1] +

_.xorBy([arrays], [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8121 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.xorby "See the npm package") [Ⓣ][1] This method is like `_.xor` except that it accepts `iteratee` which is invoked for each element of each `arrays` to generate the criterion by @@ -2279,8 +2279,8 @@ _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); -### `_.xorWith([arrays], [comparator])` -[#](#_xorwitharrays-comparator) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8119 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.xorwith "See the npm package") [Ⓣ][1] +

_.xorWith([arrays], [comparator])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8149 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.xorwith "See the npm package") [Ⓣ][1] This method is like `_.xor` except that it accepts `comparator` which is invoked to compare elements of `arrays`. The comparator is invoked with @@ -2309,8 +2309,8 @@ _.xorWith(objects, others, _.isEqual); -### `_.zip([arrays])` -[#](#_ziparrays) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8143 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zip "See the npm package") [Ⓣ][1] +

_.zip([arrays])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8173 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zip "See the npm package") [Ⓣ][1] Creates an array of grouped elements, the first of which contains the first elements of the given arrays, the second of which contains the @@ -2335,8 +2335,8 @@ _.zip(['a', 'b'], [1, 2], [true, false]); -### `_.zipObject([props=[]], [values=[]])` -[#](#_zipobjectprops-values) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8161 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zipobject "See the npm package") [Ⓣ][1] +

_.zipObject([props=[]], [values=[]])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8191 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zipobject "See the npm package") [Ⓣ][1] This method is like `_.fromPairs` except that it accepts two arrays, one of property identifiers and one of corresponding values. @@ -2361,8 +2361,8 @@ _.zipObject(['a', 'b'], [1, 2]); -### `_.zipObjectDeep([props=[]], [values=[]])` -[#](#_zipobjectdeepprops-values) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8180 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zipobjectdeep "See the npm package") [Ⓣ][1] +

_.zipObjectDeep([props=[]], [values=[]])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8210 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zipobjectdeep "See the npm package") [Ⓣ][1] This method is like `_.zipObject` except that it supports property paths. @@ -2386,8 +2386,8 @@ _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); -### `_.zipWith([arrays], [iteratee=_.identity])` -[#](#_zipwitharrays-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8203 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zipwith "See the npm package") [Ⓣ][1] +

_.zipWith([arrays], [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8233 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.zipwith "See the npm package") [Ⓣ][1] This method is like `_.zip` except that it accepts `iteratee` to specify how grouped values should be combined. The iteratee is invoked with the @@ -2421,8 +2421,8 @@ _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { -### `_.countBy(collection, [iteratee=_.identity])` -[#](#_countbycollection-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8584 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.countby "See the npm package") [Ⓣ][1] +

_.countBy(collection, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8614 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.countby "See the npm package") [Ⓣ][1] Creates an object composed of keys generated from the results of running each element of `collection` thru `iteratee`. The corresponding value of @@ -2453,12 +2453,18 @@ _.countBy(['one', 'two', 'three'], 'length'); -### `_.every(collection, [predicate=_.identity])` -[#](#_everycollection-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8625 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.every "See the npm package") [Ⓣ][1] +

_.every(collection, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8660 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.every "See the npm package") [Ⓣ][1] Checks if `predicate` returns truthy for **all** elements of `collection`. Iteration is stopped once `predicate` returns falsey. The predicate is invoked with three arguments: *(value, index|key, collection)*. +
+
+**Note:** This method returns `true` for +[empty collections](https://en.wikipedia.org/wiki/Empty_set) because +[everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of +elements of empty collections. #### Since 0.1.0 @@ -2497,8 +2503,8 @@ _.every(users, 'active'); -### `_.filter(collection, [predicate=_.identity])` -[#](#_filtercollection-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8671 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.filter "See the npm package") [Ⓣ][1] +

_.filter(collection, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8706 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.filter "See the npm package") [Ⓣ][1] Iterates over elements of `collection`, returning an array of all elements `predicate` returns truthy for. The predicate is invoked with three @@ -2544,8 +2550,8 @@ _.filter(users, 'active'); -### `_.find(collection, [predicate=_.identity], [fromIndex=0])` -[#](#_findcollection-predicate_identity-fromindex0) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8713 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.find "See the npm package") [Ⓣ][1] +

_.find(collection, [predicate=_.identity], [fromIndex=0])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8748 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.find "See the npm package") [Ⓣ][1] Iterates over elements of `collection`, returning the first element `predicate` returns truthy for. The predicate is invoked with three @@ -2590,8 +2596,8 @@ _.find(users, 'active'); -### `_.findLast(collection, [predicate=_.identity], [fromIndex=collection.length-1])` -[#](#_findlastcollection-predicate_identity-fromindexcollectionlength-1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8735 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findlast "See the npm package") [Ⓣ][1] +

_.findLast(collection, [predicate=_.identity], [fromIndex=collection.length-1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8770 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findlast "See the npm package") [Ⓣ][1] This method is like `_.find` except that it iterates over elements of `collection` from right to left. @@ -2619,8 +2625,8 @@ _.findLast([1, 2, 3, 4], function(n) { -### `_.flatMap(collection, [iteratee=_.identity])` -[#](#_flatmapcollection-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8759 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatmap "See the npm package") [Ⓣ][1] +

_.flatMap(collection, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8794 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatmap "See the npm package") [Ⓣ][1] Creates a flattened array of values by running each element in `collection` thru `iteratee` and flattening the mapped results. The iteratee is invoked @@ -2650,8 +2656,8 @@ _.flatMap([1, 2], duplicate); -### `_.flatMapDeep(collection, [iteratee=_.identity])` -[#](#_flatmapdeepcollection-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8784 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatmapdeep "See the npm package") [Ⓣ][1] +

_.flatMapDeep(collection, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8819 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatmapdeep "See the npm package") [Ⓣ][1] This method is like `_.flatMap` except that it recursively flattens the mapped results. @@ -2680,8 +2686,8 @@ _.flatMapDeep([1, 2], duplicate); -### `_.flatMapDepth(collection, [iteratee=_.identity], [depth=1])` -[#](#_flatmapdepthcollection-iteratee_identity-depth1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8810 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatmapdepth "See the npm package") [Ⓣ][1] +

_.flatMapDepth(collection, [iteratee=_.identity], [depth=1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8845 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flatmapdepth "See the npm package") [Ⓣ][1] This method is like `_.flatMap` except that it recursively flattens the mapped results up to `depth` times. @@ -2711,8 +2717,8 @@ _.flatMapDepth([1, 2], duplicate, 2); -### `_.forEach(collection, [iteratee=_.identity])` -[#](#_foreachcollection-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8845 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.foreach "See the npm package") [Ⓣ][1] +

_.forEach(collection, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8880 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.foreach "See the npm package") [Ⓣ][1] Iterates over elements of `collection` and invokes `iteratee` for each element. The iteratee is invoked with three arguments: *(value, index|key, collection)*. @@ -2753,8 +2759,8 @@ _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { -### `_.forEachRight(collection, [iteratee=_.identity])` -[#](#_foreachrightcollection-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8870 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.foreachright "See the npm package") [Ⓣ][1] +

_.forEachRight(collection, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8905 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.foreachright "See the npm package") [Ⓣ][1] This method is like `_.forEach` except that it iterates over elements of `collection` from right to left. @@ -2784,8 +2790,8 @@ _.forEachRight([1, 2], function(value) { -### `_.groupBy(collection, [iteratee=_.identity])` -[#](#_groupbycollection-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8899 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.groupby "See the npm package") [Ⓣ][1] +

_.groupBy(collection, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8934 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.groupby "See the npm package") [Ⓣ][1] Creates an object composed of keys generated from the results of running each element of `collection` thru `iteratee`. The order of grouped values @@ -2817,12 +2823,12 @@ _.groupBy(['one', 'two', 'three'], 'length'); -### `_.includes(collection, value, [fromIndex=0])` -[#](#_includescollection-value-fromindex0) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8937 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.includes "See the npm package") [Ⓣ][1] +

_.includes(collection, value, [fromIndex=0])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8972 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.includes "See the npm package") [Ⓣ][1] Checks if `value` is in `collection`. If `collection` is a string, it's checked for a substring of `value`, otherwise -[`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) +[`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) is used for equality comparisons. If `fromIndex` is negative, it's used as the offset from the end of `collection`. @@ -2856,8 +2862,8 @@ _.includes('abcd', 'bc'); -### `_.invokeMap(collection, path, [args])` -[#](#_invokemapcollection-path-args) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8973 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invokemap "See the npm package") [Ⓣ][1] +

_.invokeMap(collection, path, [args])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9008 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invokemap "See the npm package") [Ⓣ][1] Invokes the method at `path` of each element in `collection`, returning an array of the results of each invoked method. Any additional arguments @@ -2888,8 +2894,8 @@ _.invokeMap([123, 456], String.prototype.split, ''); -### `_.keyBy(collection, [iteratee=_.identity])` -[#](#_keybycollection-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9015 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.keyby "See the npm package") [Ⓣ][1] +

_.keyBy(collection, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9050 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.keyby "See the npm package") [Ⓣ][1] Creates an object composed of keys generated from the results of running each element of `collection` thru `iteratee`. The corresponding value of @@ -2926,8 +2932,8 @@ _.keyBy(array, 'dir'); -### `_.map(collection, [iteratee=_.identity])` -[#](#_mapcollection-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9061 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.map "See the npm package") [Ⓣ][1] +

_.map(collection, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9096 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.map "See the npm package") [Ⓣ][1] Creates an array of values by running each element in `collection` thru `iteratee`. The iteratee is invoked with three arguments:
@@ -2980,8 +2986,8 @@ _.map(users, 'user'); -### `_.orderBy(collection, [iteratees=[_.identity]], [orders])` -[#](#_orderbycollection-iteratees_identity-orders) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9095 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.orderby "See the npm package") [Ⓣ][1] +

_.orderBy(collection, [iteratees=[_.identity]], [orders])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9130 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.orderby "See the npm package") [Ⓣ][1] This method is like `_.sortBy` except that it allows specifying the sort orders of the iteratees to sort by. If `orders` is unspecified, all values @@ -3017,8 +3023,8 @@ _.orderBy(users, ['user', 'age'], ['asc', 'desc']); -### `_.partition(collection, [predicate=_.identity])` -[#](#_partitioncollection-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9145 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.partition "See the npm package") [Ⓣ][1] +

_.partition(collection, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9180 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.partition "See the npm package") [Ⓣ][1] Creates an array of elements split into two groups, the first of which contains elements `predicate` returns truthy for, the second of which @@ -3063,8 +3069,8 @@ _.partition(users, 'active'); -### `_.reduce(collection, [iteratee=_.identity], [accumulator])` -[#](#_reducecollection-iteratee_identity-accumulator) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9186 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reduce "See the npm package") [Ⓣ][1] +

_.reduce(collection, [iteratee=_.identity], [accumulator])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9221 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reduce "See the npm package") [Ⓣ][1] Reduces `collection` to a value which is the accumulated result of running each element in `collection` thru `iteratee`, where each successive @@ -3111,8 +3117,8 @@ _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { -### `_.reduceRight(collection, [iteratee=_.identity], [accumulator])` -[#](#_reducerightcollection-iteratee_identity-accumulator) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9215 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reduceright "See the npm package") [Ⓣ][1] +

_.reduceRight(collection, [iteratee=_.identity], [accumulator])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9250 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reduceright "See the npm package") [Ⓣ][1] This method is like `_.reduce` except that it iterates over elements of `collection` from right to left. @@ -3142,8 +3148,8 @@ _.reduceRight(array, function(flattened, other) { -### `_.reject(collection, [predicate=_.identity])` -[#](#_rejectcollection-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9256 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reject "See the npm package") [Ⓣ][1] +

_.reject(collection, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9291 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.reject "See the npm package") [Ⓣ][1] The opposite of `_.filter`; this method returns the elements of `collection` that `predicate` does **not** return truthy for. @@ -3185,8 +3191,8 @@ _.reject(users, 'active'); -### `_.sample(collection)` -[#](#_samplecollection) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9275 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sample "See the npm package") [Ⓣ][1] +

_.sample(collection)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9310 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sample "See the npm package") [Ⓣ][1] Gets a random element from `collection`. @@ -3209,8 +3215,8 @@ _.sample([1, 2, 3, 4]); -### `_.sampleSize(collection, [n=1])` -[#](#_samplesizecollection-n1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9302 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.samplesize "See the npm package") [Ⓣ][1] +

_.sampleSize(collection, [n=1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9337 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.samplesize "See the npm package") [Ⓣ][1] Gets `n` random elements at unique keys from `collection` up to the size of `collection`. @@ -3238,8 +3244,8 @@ _.sampleSize([1, 2, 3], 4); -### `_.shuffle(collection)` -[#](#_shufflecollection) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9339 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.shuffle "See the npm package") [Ⓣ][1] +

_.shuffle(collection)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9374 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.shuffle "See the npm package") [Ⓣ][1] Creates an array of shuffled values, using a version of the [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). @@ -3263,8 +3269,8 @@ _.shuffle([1, 2, 3, 4]); -### `_.size(collection)` -[#](#_sizecollection) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9364 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.size "See the npm package") [Ⓣ][1] +

_.size(collection)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9399 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.size "See the npm package") [Ⓣ][1] Gets the size of `collection` by returning its length for array-like values or the number of own enumerable string keyed properties for objects. @@ -3294,8 +3300,8 @@ _.size('pebbles'); -### `_.some(collection, [predicate=_.identity])` -[#](#_somecollection-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9417 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.some "See the npm package") [Ⓣ][1] +

_.some(collection, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9452 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.some "See the npm package") [Ⓣ][1] Checks if `predicate` returns truthy for **any** element of `collection`. Iteration is stopped once `predicate` returns truthy. The predicate is @@ -3338,8 +3344,8 @@ _.some(users, 'active'); -### `_.sortBy(collection, [iteratees=[_.identity]])` -[#](#_sortbycollection-iteratees_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9459 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortby "See the npm package") [Ⓣ][1] +

_.sortBy(collection, [iteratees=[_.identity]])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9494 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sortby "See the npm package") [Ⓣ][1] Creates an array of elements, sorted in ascending order by the results of running each element in a collection thru each iteratee. This method @@ -3387,8 +3393,8 @@ _.sortBy(users, 'user', function(o) { -### `_.now()` -[#](#_now) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9490 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.now "See the npm package") [Ⓣ][1] +

_.now()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9525 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.now "See the npm package") [Ⓣ][1] Gets the timestamp of the number of milliseconds that have elapsed since the Unix epoch *(1 January `1970 00`:00:00 UTC)*. @@ -3417,8 +3423,8 @@ _.defer(function(stamp) { -### `_.after(n, func)` -[#](#_aftern-func) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9520 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.after "See the npm package") [Ⓣ][1] +

_.after(n, func)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9555 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.after "See the npm package") [Ⓣ][1] The opposite of `_.before`; this method creates a function that invokes `func` once it's called `n` or more times. @@ -3451,8 +3457,8 @@ _.forEach(saves, function(type) { -### `_.ary(func, [n=func.length])` -[#](#_aryfunc-nfunclength) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9549 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ary "See the npm package") [Ⓣ][1] +

_.ary(func, [n=func.length])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9584 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ary "See the npm package") [Ⓣ][1] Creates a function that invokes `func`, with up to `n` arguments, ignoring any additional arguments. @@ -3477,8 +3483,8 @@ _.map(['6', '8', '10'], _.ary(parseInt, 1)); -### `_.before(n, func)` -[#](#_beforen-func) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9572 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.before "See the npm package") [Ⓣ][1] +

_.before(n, func)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9607 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.before "See the npm package") [Ⓣ][1] Creates a function that invokes `func`, with the `this` binding and arguments of the created function, while it's called less than `n` times. Subsequent @@ -3504,8 +3510,8 @@ jQuery(element).on('click', _.before(5, addContactToList)); -### `_.bind(func, thisArg, [partials])` -[#](#_bindfunc-thisarg-partials) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9624 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.bind "See the npm package") [Ⓣ][1] +

_.bind(func, thisArg, [partials])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9659 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.bind "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with the `this` binding of `thisArg` and `partials` prepended to the arguments it receives. @@ -3551,8 +3557,8 @@ bound('hi'); -### `_.bindKey(object, key, [partials])` -[#](#_bindkeyobject-key-partials) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9678 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.bindkey "See the npm package") [Ⓣ][1] +

_.bindKey(object, key, [partials])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9713 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.bindkey "See the npm package") [Ⓣ][1] Creates a function that invokes the method at `object[key]` with `partials` prepended to the arguments it receives. @@ -3608,8 +3614,8 @@ bound('hi'); -### `_.curry(func, [arity=func.length])` -[#](#_curryfunc-arityfunclength) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9728 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.curry "See the npm package") [Ⓣ][1] +

_.curry(func, [arity=func.length])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9763 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.curry "See the npm package") [Ⓣ][1] Creates a function that accepts arguments of `func` and either invokes `func` returning its result, if at least `arity` number of arguments have @@ -3660,8 +3666,8 @@ curried(1)(_, 3)(2); -### `_.curryRight(func, [arity=func.length])` -[#](#_curryrightfunc-arityfunclength) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9773 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.curryright "See the npm package") [Ⓣ][1] +

_.curryRight(func, [arity=func.length])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9808 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.curryright "See the npm package") [Ⓣ][1] This method is like `_.curry` except that arguments are applied to `func` in the manner of `_.partialRight` instead of `_.partial`. @@ -3709,8 +3715,8 @@ curried(3)(1, _)(2); -### `_.debounce(func, [wait=0], [options={}], [options.leading=false], [options.maxWait], [options.trailing=true])` -[#](#_debouncefunc-wait0-options-optionsleadingfalse-optionsmaxwait-optionstrailingtrue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9834 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.debounce "See the npm package") [Ⓣ][1] +

_.debounce(func, [wait=0], [options={}], [options.leading=false], [options.maxWait], [options.trailing=true])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L9869 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.debounce "See the npm package") [Ⓣ][1] Creates a debounced function that delays invoking `func` until after `wait` milliseconds have elapsed since the last time the debounced function was @@ -3773,8 +3779,8 @@ jQuery(window).on('popstate', debounced.cancel); -### `_.defer(func, [args])` -[#](#_deferfunc-args) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9974 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defer "See the npm package") [Ⓣ][1] +

_.defer(func, [args])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10009 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defer "See the npm package") [Ⓣ][1] Defers invoking the `func` until the current call stack has cleared. Any additional arguments are provided to `func` when it's invoked. @@ -3801,8 +3807,8 @@ _.defer(function(text) { -### `_.delay(func, wait, [args])` -[#](#_delayfunc-wait-args) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L9997 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.delay "See the npm package") [Ⓣ][1] +

_.delay(func, wait, [args])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10032 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.delay "See the npm package") [Ⓣ][1] Invokes `func` after `wait` milliseconds. Any additional arguments are provided to `func` when it's invoked. @@ -3830,8 +3836,8 @@ _.delay(function(text) { -### `_.flip(func)` -[#](#_flipfunc) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10019 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flip "See the npm package") [Ⓣ][1] +

_.flip(func)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10054 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flip "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with arguments reversed. @@ -3858,8 +3864,8 @@ flipped('a', 'b', 'c', 'd'); -### `_.memoize(func, [resolver])` -[#](#_memoizefunc-resolver) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10067 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.memoize "See the npm package") [Ⓣ][1] +

_.memoize(func, [resolver])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10102 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.memoize "See the npm package") [Ⓣ][1] Creates a function that memoizes the result of `func`. If `resolver` is provided, it determines the cache key for storing the result based on the @@ -3871,7 +3877,7 @@ is invoked with the `this` binding of the memoized function. **Note:** The cache is exposed as the `cache` property on the memoized function. Its creation may be customized by replacing the `_.memoize.Cache` constructor with one whose instances implement the -[`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object) +[`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) method interface of `delete`, `get`, `has`, and `set`. #### Since @@ -3913,8 +3919,8 @@ _.memoize.Cache = WeakMap; -### `_.negate(predicate)` -[#](#_negatepredicate) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10110 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.negate "See the npm package") [Ⓣ][1] +

_.negate(predicate)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10145 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.negate "See the npm package") [Ⓣ][1] Creates a function that negates the result of the predicate `func`. The `func` predicate is invoked with the `this` binding and arguments of the @@ -3943,8 +3949,8 @@ _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); -### `_.once(func)` -[#](#_oncefunc) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10144 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.once "See the npm package") [Ⓣ][1] +

_.once(func)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10179 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.once "See the npm package") [Ⓣ][1] Creates a function that is restricted to invoking `func` once. Repeat calls to the function return the value of the first invocation. The `func` is @@ -3971,8 +3977,8 @@ initialize(); -### `_.overArgs(func, [transforms=[_.identity]])` -[#](#_overargsfunc-transforms_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10179 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.overargs "See the npm package") [Ⓣ][1] +

_.overArgs(func, [transforms=[_.identity]])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10214 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.overargs "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with its arguments transformed. @@ -4011,8 +4017,8 @@ func(10, 5); -### `_.partial(func, [partials])` -[#](#_partialfunc-partials) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10229 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.partial "See the npm package") [Ⓣ][1] +

_.partial(func, [partials])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10264 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.partial "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with `partials` prepended to the arguments it receives. This method is like `_.bind` except it does **not** @@ -4056,8 +4062,8 @@ greetFred('hi'); -### `_.partialRight(func, [partials])` -[#](#_partialrightfunc-partials) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10266 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.partialright "See the npm package") [Ⓣ][1] +

_.partialRight(func, [partials])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10301 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.partialright "See the npm package") [Ⓣ][1] This method is like `_.partial` except that partially applied arguments are appended to the arguments it receives. @@ -4100,8 +4106,8 @@ sayHelloTo('fred'); -### `_.rearg(func, indexes)` -[#](#_reargfunc-indexes) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10293 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.rearg "See the npm package") [Ⓣ][1] +

_.rearg(func, indexes)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10328 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.rearg "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with arguments arranged according to the specified `indexes` where the argument value at the first index is @@ -4132,8 +4138,8 @@ rearged('b', 'c', 'a') -### `_.rest(func, [start=func.length-1])` -[#](#_restfunc-startfunclength-1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10322 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.rest "See the npm package") [Ⓣ][1] +

_.rest(func, [start=func.length-1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10357 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.rest "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with the `this` binding of the created function and arguments from `start` and beyond provided as @@ -4168,12 +4174,12 @@ say('hello', 'fred', 'barney', 'pebbles'); -### `_.spread(func, [start=0])` -[#](#_spreadfunc-start0) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10364 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.spread "See the npm package") [Ⓣ][1] +

_.spread(func, [start=0])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10399 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.spread "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with the `this` binding of the create function and an array of arguments much like -[`Function#apply`](http://www.ecma-international.org/ecma-262/6.0/#sec-function.prototype.apply). +[`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).

**Note:** This method is based on the @@ -4213,8 +4219,8 @@ numbers.then(_.spread(function(x, y) { -### `_.throttle(func, [wait=0], [options={}], [options.leading=true], [options.trailing=true])` -[#](#_throttlefunc-wait0-options-optionsleadingtrue-optionstrailingtrue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10424 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.throttle "See the npm package") [Ⓣ][1] +

_.throttle(func, [wait=0], [options={}], [options.leading=true], [options.trailing=true])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10459 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.throttle "See the npm package") [Ⓣ][1] Creates a throttled function that only invokes `func` at most once per every `wait` milliseconds. The throttled function comes with a `cancel` @@ -4268,8 +4274,8 @@ jQuery(window).on('popstate', throttled.cancel); -### `_.unary(func)` -[#](#_unaryfunc) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10457 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unary "See the npm package") [Ⓣ][1] +

_.unary(func)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10492 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unary "See the npm package") [Ⓣ][1] Creates a function that accepts up to one argument, ignoring any additional arguments. @@ -4293,8 +4299,8 @@ _.map(['6', '8', '10'], _.unary(parseInt)); -### `_.wrap(value, [wrapper=identity])` -[#](#_wrapvalue-wrapperidentity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10483 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.wrap "See the npm package") [Ⓣ][1] +

_.wrap(value, [wrapper=identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10518 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.wrap "See the npm package") [Ⓣ][1] Creates a function that provides `value` to `wrapper` as its first argument. Any additional arguments provided to the function are appended @@ -4331,8 +4337,8 @@ p('fred, barney, & pebbles'); -### `_.castArray(value)` -[#](#_castarrayvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10523 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.castarray "See the npm package") [Ⓣ][1] +

_.castArray(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10558 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.castarray "See the npm package") [Ⓣ][1] Casts `value` as an array if it's not one. @@ -4374,8 +4380,8 @@ console.log(_.castArray(array) === array); -### `_.clone(value)` -[#](#_clonevalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10557 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clone "See the npm package") [Ⓣ][1] +

_.clone(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10592 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clone "See the npm package") [Ⓣ][1] Creates a shallow clone of `value`.
@@ -4410,8 +4416,8 @@ console.log(shallow[0] === objects[0]); -### `_.cloneDeep(value)` -[#](#_clonedeepvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10614 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clonedeep "See the npm package") [Ⓣ][1] +

_.cloneDeep(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10649 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clonedeep "See the npm package") [Ⓣ][1] This method is like `_.clone` except that it recursively clones `value`. @@ -4437,8 +4443,8 @@ console.log(deep[0] === objects[0]); -### `_.cloneDeepWith(value, [customizer])` -[#](#_clonedeepwithvalue-customizer) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10646 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clonedeepwith "See the npm package") [Ⓣ][1] +

_.cloneDeepWith(value, [customizer])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10681 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clonedeepwith "See the npm package") [Ⓣ][1] This method is like `_.cloneWith` except that it recursively clones `value`. @@ -4474,8 +4480,8 @@ console.log(el.childNodes.length); -### `_.cloneWith(value, [customizer])` -[#](#_clonewithvalue-customizer) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10592 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clonewith "See the npm package") [Ⓣ][1] +

_.cloneWith(value, [customizer])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10627 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clonewith "See the npm package") [Ⓣ][1] This method is like `_.clone` except that it accepts `customizer` which is invoked to produce the cloned value. If `customizer` returns `undefined`, @@ -4514,8 +4520,8 @@ console.log(el.childNodes.length); -### `_.conformsTo(object, source)` -[#](#_conformstoobject-source) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10674 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.conformsto "See the npm package") [Ⓣ][1] +

_.conformsTo(object, source)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10709 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.conformsto "See the npm package") [Ⓣ][1] Checks if `object` conforms to `source` by invoking the predicate properties of `source` with the corresponding property values of `object`. @@ -4549,11 +4555,11 @@ _.conformsTo(object, { 'b': function(n) { return n > 2; } }); -### `_.eq(value, other)` -[#](#_eqvalue-other) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10710 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.eq "See the npm package") [Ⓣ][1] +

_.eq(value, other)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10745 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.eq "See the npm package") [Ⓣ][1] Performs a -[`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) +[`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) comparison between two values to determine if they are equivalent. #### Since @@ -4591,8 +4597,8 @@ _.eq(NaN, NaN); -### `_.gt(value, other)` -[#](#_gtvalue-other) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10737 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.gt "See the npm package") [Ⓣ][1] +

_.gt(value, other)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10772 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.gt "See the npm package") [Ⓣ][1] Checks if `value` is greater than `other`. @@ -4622,8 +4628,8 @@ _.gt(1, 3); -### `_.gte(value, other)` -[#](#_gtevalue-other) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10762 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.gte "See the npm package") [Ⓣ][1] +

_.gte(value, other)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10797 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.gte "See the npm package") [Ⓣ][1] Checks if `value` is greater than or equal to `other`. @@ -4653,8 +4659,8 @@ _.gte(1, 3); -### `_.isArguments(value)` -[#](#_isargumentsvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10784 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarguments "See the npm package") [Ⓣ][1] +

_.isArguments(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10819 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarguments "See the npm package") [Ⓣ][1] Checks if `value` is likely an `arguments` object. @@ -4680,8 +4686,8 @@ _.isArguments([1, 2, 3]); -### `_.isArray(value)` -[#](#_isarrayvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10813 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarray "See the npm package") [Ⓣ][1] +

_.isArray(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10848 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarray "See the npm package") [Ⓣ][1] Checks if `value` is classified as an `Array` object. @@ -4713,8 +4719,8 @@ _.isArray(_.noop); -### `_.isArrayBuffer(value)` -[#](#_isarraybuffervalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10832 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarraybuffer "See the npm package") [Ⓣ][1] +

_.isArrayBuffer(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10867 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarraybuffer "See the npm package") [Ⓣ][1] Checks if `value` is classified as an `ArrayBuffer` object. @@ -4740,8 +4746,8 @@ _.isArrayBuffer(new Array(2)); -### `_.isArrayLike(value)` -[#](#_isarraylikevalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10859 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarraylike "See the npm package") [Ⓣ][1] +

_.isArrayLike(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10894 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarraylike "See the npm package") [Ⓣ][1] Checks if `value` is array-like. A value is considered array-like if it's not a function and has a `value.length` that's an integer greater than or @@ -4775,8 +4781,8 @@ _.isArrayLike(_.noop); -### `_.isArrayLikeObject(value)` -[#](#_isarraylikeobjectvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10888 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarraylikeobject "See the npm package") [Ⓣ][1] +

_.isArrayLikeObject(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10923 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isarraylikeobject "See the npm package") [Ⓣ][1] This method is like `_.isArrayLike` except that it also checks if `value` is an object. @@ -4809,8 +4815,8 @@ _.isArrayLikeObject(_.noop); -### `_.isBoolean(value)` -[#](#_isbooleanvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10909 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isboolean "See the npm package") [Ⓣ][1] +

_.isBoolean(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10944 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isboolean "See the npm package") [Ⓣ][1] Checks if `value` is classified as a boolean primitive or object. @@ -4836,8 +4842,8 @@ _.isBoolean(null); -### `_.isBuffer(value)` -[#](#_isbuffervalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10931 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isbuffer "See the npm package") [Ⓣ][1] +

_.isBuffer(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10966 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isbuffer "See the npm package") [Ⓣ][1] Checks if `value` is a buffer. @@ -4863,8 +4869,8 @@ _.isBuffer(new Uint8Array(2)); -### `_.isDate(value)` -[#](#_isdatevalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10950 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isdate "See the npm package") [Ⓣ][1] +

_.isDate(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L10985 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isdate "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `Date` object. @@ -4890,8 +4896,8 @@ _.isDate('Mon April 23 2012'); -### `_.isElement(value)` -[#](#_iselementvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L10970 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.iselement "See the npm package") [Ⓣ][1] +

_.isElement(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11004 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.iselement "See the npm package") [Ⓣ][1] Checks if `value` is likely a DOM element. @@ -4917,8 +4923,8 @@ _.isElement(''); -### `_.isEmpty(value)` -[#](#_isemptyvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11007 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isempty "See the npm package") [Ⓣ][1] +

_.isEmpty(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11041 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isempty "See the npm package") [Ⓣ][1] Checks if `value` is an empty object, collection, map, or set.
@@ -4962,8 +4968,8 @@ _.isEmpty({ 'a': 1 }); -### `_.isEqual(value, other)` -[#](#_isequalvalue-other) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11056 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isequal "See the npm package") [Ⓣ][1] +

_.isEqual(value, other)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11091 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isequal "See the npm package") [Ⓣ][1] Performs a deep comparison between two values to determine if they are equivalent. @@ -5001,8 +5007,8 @@ object === other; -### `_.isEqualWith(value, other, [customizer])` -[#](#_isequalwithvalue-other-customizer) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11093 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isequalwith "See the npm package") [Ⓣ][1] +

_.isEqualWith(value, other, [customizer])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11127 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isequalwith "See the npm package") [Ⓣ][1] This method is like `_.isEqual` except that it accepts `customizer` which is invoked to compare values. If `customizer` returns `undefined`, comparisons @@ -5043,8 +5049,8 @@ _.isEqualWith(array, other, customizer); -### `_.isError(value)` -[#](#_iserrorvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11118 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.iserror "See the npm package") [Ⓣ][1] +

_.isError(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11151 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.iserror "See the npm package") [Ⓣ][1] Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, `SyntaxError`, `TypeError`, or `URIError` object. @@ -5071,8 +5077,8 @@ _.isError(Error); -### `_.isFinite(value)` -[#](#_isfinitevalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11153 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isfinite "See the npm package") [Ⓣ][1] +

_.isFinite(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11185 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isfinite "See the npm package") [Ⓣ][1] Checks if `value` is a finite primitive number.
@@ -5108,8 +5114,8 @@ _.isFinite('3'); -### `_.isFunction(value)` -[#](#_isfunctionvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11174 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isfunction "See the npm package") [Ⓣ][1] +

_.isFunction(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11206 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isfunction "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `Function` object. @@ -5135,8 +5141,8 @@ _.isFunction(/abc/); -### `_.isInteger(value)` -[#](#_isintegervalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11208 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isinteger "See the npm package") [Ⓣ][1] +

_.isInteger(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11240 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isinteger "See the npm package") [Ⓣ][1] Checks if `value` is an integer.
@@ -5172,14 +5178,14 @@ _.isInteger('3'); -### `_.isLength(value)` -[#](#_islengthvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11239 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.islength "See the npm package") [Ⓣ][1] +

_.isLength(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11270 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.islength "See the npm package") [Ⓣ][1] Checks if `value` is a valid array-like length.

-**Note:** This function is loosely based on -[`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). +**Note:** This method is loosely based on +[`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). #### Since 4.0.0 @@ -5209,8 +5215,8 @@ _.isLength('3'); -### `_.isMap(value)` -[#](#_ismapvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11319 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ismap "See the npm package") [Ⓣ][1] +

_.isMap(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11350 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ismap "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `Map` object. @@ -5236,15 +5242,20 @@ _.isMap(new WeakMap); -### `_.isMatch(object, source)` -[#](#_ismatchobject-source) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11345 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ismatch "See the npm package") [Ⓣ][1] +

_.isMatch(object, source)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11380 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ismatch "See the npm package") [Ⓣ][1] Performs a partial deep comparison between `object` and `source` to determine if `object` contains equivalent property values.

-**Note:** This method supports comparing the same values as `_.isEqual` -and is equivalent to `_.matches` when `source` is partially applied. +**Note:** This method is equivalent to `_.matches` when `source` is +partially applied. +
+
+Partial comparisons will match empty array and empty object `source` +values against any array or object value, respectively. See `_.isEqual` +for a list of supported value comparisons. #### Since 3.0.0 @@ -5271,8 +5282,8 @@ _.isMatch(object, { 'b': 1 }); -### `_.isMatchWith(object, source, [customizer])` -[#](#_ismatchwithobject-source-customizer) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11381 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ismatchwith "See the npm package") [Ⓣ][1] +

_.isMatchWith(object, source, [customizer])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11416 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ismatchwith "See the npm package") [Ⓣ][1] This method is like `_.isMatch` except that it accepts `customizer` which is invoked to compare values. If `customizer` returns `undefined`, comparisons @@ -5313,8 +5324,8 @@ _.isMatchWith(object, source, customizer); -### `_.isNaN(value)` -[#](#_isnanvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11414 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnan "See the npm package") [Ⓣ][1] +

_.isNaN(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11449 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnan "See the npm package") [Ⓣ][1] Checks if `value` is `NaN`.
@@ -5352,8 +5363,8 @@ _.isNaN(undefined); -### `_.isNative(value)` -[#](#_isnativevalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11447 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnative "See the npm package") [Ⓣ][1] +

_.isNative(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11482 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnative "See the npm package") [Ⓣ][1] Checks if `value` is a pristine native function.
@@ -5388,8 +5399,8 @@ _.isNative(_); -### `_.isNil(value)` -[#](#_isnilvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11495 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnil "See the npm package") [Ⓣ][1] +

_.isNil(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11530 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnil "See the npm package") [Ⓣ][1] Checks if `value` is `null` or `undefined`. @@ -5418,8 +5429,8 @@ _.isNil(NaN); -### `_.isNull(value)` -[#](#_isnullvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11471 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnull "See the npm package") [Ⓣ][1] +

_.isNull(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11506 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnull "See the npm package") [Ⓣ][1] Checks if `value` is `null`. @@ -5445,8 +5456,8 @@ _.isNull(void 0); -### `_.isNumber(value)` -[#](#_isnumbervalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11525 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnumber "See the npm package") [Ⓣ][1] +

_.isNumber(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11560 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isnumber "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `Number` primitive or object.
@@ -5482,11 +5493,11 @@ _.isNumber('3'); -### `_.isObject(value)` -[#](#_isobjectvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11269 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isobject "See the npm package") [Ⓣ][1] +

_.isObject(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11300 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isobject "See the npm package") [Ⓣ][1] Checks if `value` is the -[language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types) +[language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) of `Object`. *(e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)* #### Since @@ -5517,8 +5528,8 @@ _.isObject(null); -### `_.isObjectLike(value)` -[#](#_isobjectlikevalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11298 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isobjectlike "See the npm package") [Ⓣ][1] +

_.isObjectLike(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11329 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isobjectlike "See the npm package") [Ⓣ][1] Checks if `value` is object-like. A value is object-like if it's not `null` and has a `typeof` result of "object". @@ -5551,8 +5562,8 @@ _.isObjectLike(null); -### `_.isPlainObject(value)` -[#](#_isplainobjectvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11559 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isplainobject "See the npm package") [Ⓣ][1] +

_.isPlainObject(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11593 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isplainobject "See the npm package") [Ⓣ][1] Checks if `value` is a plain object, that is, an object created by the `Object` constructor or one with a `[[Prototype]]` of `null`. @@ -5589,8 +5600,8 @@ _.isPlainObject(Object.create(null)); -### `_.isRegExp(value)` -[#](#_isregexpvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11590 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isregexp "See the npm package") [Ⓣ][1] +

_.isRegExp(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11624 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isregexp "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `RegExp` object. @@ -5616,8 +5627,8 @@ _.isRegExp('/abc/'); -### `_.isSafeInteger(value)` -[#](#_issafeintegervalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11620 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.issafeinteger "See the npm package") [Ⓣ][1] +

_.isSafeInteger(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11653 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.issafeinteger "See the npm package") [Ⓣ][1] Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 double precision number which isn't the result of a rounded unsafe integer. @@ -5654,8 +5665,8 @@ _.isSafeInteger('3'); -### `_.isSet(value)` -[#](#_issetvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11641 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isset "See the npm package") [Ⓣ][1] +

_.isSet(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11674 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isset "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `Set` object. @@ -5681,8 +5692,8 @@ _.isSet(new WeakSet); -### `_.isString(value)` -[#](#_isstringvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11660 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isstring "See the npm package") [Ⓣ][1] +

_.isString(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11693 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isstring "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `String` primitive or object. @@ -5708,8 +5719,8 @@ _.isString(1); -### `_.isSymbol(value)` -[#](#_issymbolvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11682 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.issymbol "See the npm package") [Ⓣ][1] +

_.isSymbol(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11715 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.issymbol "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `Symbol` primitive or object. @@ -5735,8 +5746,8 @@ _.isSymbol('abc'); -### `_.isTypedArray(value)` -[#](#_istypedarrayvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11704 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.istypedarray "See the npm package") [Ⓣ][1] +

_.isTypedArray(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11737 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.istypedarray "See the npm package") [Ⓣ][1] Checks if `value` is classified as a typed array. @@ -5762,8 +5773,8 @@ _.isTypedArray([]); -### `_.isUndefined(value)` -[#](#_isundefinedvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11723 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isundefined "See the npm package") [Ⓣ][1] +

_.isUndefined(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11756 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isundefined "See the npm package") [Ⓣ][1] Checks if `value` is `undefined`. @@ -5789,8 +5800,8 @@ _.isUndefined(null); -### `_.isWeakMap(value)` -[#](#_isweakmapvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11744 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isweakmap "See the npm package") [Ⓣ][1] +

_.isWeakMap(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11777 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isweakmap "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `WeakMap` object. @@ -5816,8 +5827,8 @@ _.isWeakMap(new Map); -### `_.isWeakSet(value)` -[#](#_isweaksetvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11765 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isweakset "See the npm package") [Ⓣ][1] +

_.isWeakSet(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11798 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.isweakset "See the npm package") [Ⓣ][1] Checks if `value` is classified as a `WeakSet` object. @@ -5843,8 +5854,8 @@ _.isWeakSet(new Set); -### `_.lt(value, other)` -[#](#_ltvalue-other) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11792 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lt "See the npm package") [Ⓣ][1] +

_.lt(value, other)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11825 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lt "See the npm package") [Ⓣ][1] Checks if `value` is less than `other`. @@ -5874,8 +5885,8 @@ _.lt(3, 1); -### `_.lte(value, other)` -[#](#_ltevalue-other) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11817 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lte "See the npm package") [Ⓣ][1] +

_.lte(value, other)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11850 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lte "See the npm package") [Ⓣ][1] Checks if `value` is less than or equal to `other`. @@ -5905,8 +5916,8 @@ _.lte(3, 1); -### `_.toArray(value)` -[#](#_toarrayvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11844 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.toarray "See the npm package") [Ⓣ][1] +

_.toArray(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11877 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.toarray "See the npm package") [Ⓣ][1] Converts `value` to an array. @@ -5938,8 +5949,8 @@ _.toArray(null); -### `_.toFinite(value)` -[#](#_tofinitevalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11883 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tofinite "See the npm package") [Ⓣ][1] +

_.toFinite(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11916 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tofinite "See the npm package") [Ⓣ][1] Converts `value` to a finite number. @@ -5971,14 +5982,14 @@ _.toFinite('3.2'); -### `_.toInteger(value)` -[#](#_tointegervalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11921 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tointeger "See the npm package") [Ⓣ][1] +

_.toInteger(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11954 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tointeger "See the npm package") [Ⓣ][1] Converts `value` to an integer.

**Note:** This method is loosely based on -[`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger). +[`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). #### Since 4.0.0 @@ -6008,15 +6019,15 @@ _.toInteger('3.2'); -### `_.toLength(value)` -[#](#_tolengthvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11955 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tolength "See the npm package") [Ⓣ][1] +

_.toLength(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L11988 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tolength "See the npm package") [Ⓣ][1] Converts `value` to an integer suitable for use as the length of an array-like object.

**Note:** This method is based on -[`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). +[`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). #### Since 4.0.0 @@ -6046,8 +6057,8 @@ _.toLength('3.2'); -### `_.toNumber(value)` -[#](#_tonumbervalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L11982 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tonumber "See the npm package") [Ⓣ][1] +

_.toNumber(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12015 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tonumber "See the npm package") [Ⓣ][1] Converts `value` to a number. @@ -6079,8 +6090,8 @@ _.toNumber('3.2'); -### `_.toPlainObject(value)` -[#](#_toplainobjectvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12027 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.toplainobject "See the npm package") [Ⓣ][1] +

_.toPlainObject(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12060 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.toplainobject "See the npm package") [Ⓣ][1] Converts `value` to a plain object flattening inherited enumerable string keyed properties of `value` to own properties of the plain object. @@ -6113,8 +6124,8 @@ _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); -### `_.toSafeInteger(value)` -[#](#_tosafeintegervalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12055 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tosafeinteger "See the npm package") [Ⓣ][1] +

_.toSafeInteger(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12088 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tosafeinteger "See the npm package") [Ⓣ][1] Converts `value` to a safe integer. A safe integer can be compared and represented correctly. @@ -6147,8 +6158,8 @@ _.toSafeInteger('3.2'); -### `_.toString(value)` -[#](#_tostringvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12080 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tostring "See the npm package") [Ⓣ][1] +

_.toString(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12113 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tostring "See the npm package") [Ⓣ][1] Converts `value` to a string. An empty string is returned for `null` and `undefined` values. The sign of `-0` is preserved. @@ -6184,8 +6195,8 @@ _.toString([1, 2, 3]); -### `_.add(augend, addend)` -[#](#_addaugend-addend) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15687 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.add "See the npm package") [Ⓣ][1] +

_.add(augend, addend)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15688 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.add "See the npm package") [Ⓣ][1] Adds two numbers. @@ -6209,8 +6220,8 @@ _.add(6, 4); -### `_.ceil(number, [precision=0])` -[#](#_ceilnumber-precision0) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15712 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ceil "See the npm package") [Ⓣ][1] +

_.ceil(number, [precision=0])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15713 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ceil "See the npm package") [Ⓣ][1] Computes `number` rounded up to `precision`. @@ -6240,8 +6251,8 @@ _.ceil(6040, -2); -### `_.divide(dividend, divisor)` -[#](#_dividedividend-divisor) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15729 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.divide "See the npm package") [Ⓣ][1] +

_.divide(dividend, divisor)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15730 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.divide "See the npm package") [Ⓣ][1] Divide two numbers. @@ -6265,8 +6276,8 @@ _.divide(6, 4); -### `_.floor(number, [precision=0])` -[#](#_floornumber-precision0) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15754 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.floor "See the npm package") [Ⓣ][1] +

_.floor(number, [precision=0])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15755 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.floor "See the npm package") [Ⓣ][1] Computes `number` rounded down to `precision`. @@ -6296,8 +6307,8 @@ _.floor(4060, -2); -### `_.max(array)` -[#](#_maxarray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15774 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.max "See the npm package") [Ⓣ][1] +

_.max(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15775 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.max "See the npm package") [Ⓣ][1] Computes the maximum value of `array`. If `array` is empty or falsey, `undefined` is returned. @@ -6324,8 +6335,8 @@ _.max([]); -### `_.maxBy(array, [iteratee=_.identity])` -[#](#_maxbyarray-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15803 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.maxby "See the npm package") [Ⓣ][1] +

_.maxBy(array, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15804 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.maxby "See the npm package") [Ⓣ][1] This method is like `_.max` except that it accepts `iteratee` which is invoked for each element in `array` to generate the criterion by which @@ -6357,8 +6368,8 @@ _.maxBy(objects, 'n'); -### `_.mean(array)` -[#](#_meanarray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15823 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mean "See the npm package") [Ⓣ][1] +

_.mean(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15824 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mean "See the npm package") [Ⓣ][1] Computes the mean of the values in `array`. @@ -6381,8 +6392,8 @@ _.mean([4, 2, 8, 6]); -### `_.meanBy(array, [iteratee=_.identity])` -[#](#_meanbyarray-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15850 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.meanby "See the npm package") [Ⓣ][1] +

_.meanBy(array, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15851 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.meanby "See the npm package") [Ⓣ][1] This method is like `_.mean` except that it accepts `iteratee` which is invoked for each element in `array` to generate the value to be averaged. @@ -6414,8 +6425,8 @@ _.meanBy(objects, 'n'); -### `_.min(array)` -[#](#_minarray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15872 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.min "See the npm package") [Ⓣ][1] +

_.min(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15873 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.min "See the npm package") [Ⓣ][1] Computes the minimum value of `array`. If `array` is empty or falsey, `undefined` is returned. @@ -6442,8 +6453,8 @@ _.min([]); -### `_.minBy(array, [iteratee=_.identity])` -[#](#_minbyarray-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15901 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.minby "See the npm package") [Ⓣ][1] +

_.minBy(array, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15902 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.minby "See the npm package") [Ⓣ][1] This method is like `_.min` except that it accepts `iteratee` which is invoked for each element in `array` to generate the criterion by which @@ -6475,8 +6486,8 @@ _.minBy(objects, 'n'); -### `_.multiply(multiplier, multiplicand)` -[#](#_multiplymultiplier-multiplicand) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15922 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.multiply "See the npm package") [Ⓣ][1] +

_.multiply(multiplier, multiplicand)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15923 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.multiply "See the npm package") [Ⓣ][1] Multiply two numbers. @@ -6500,8 +6511,8 @@ _.multiply(6, 4); -### `_.round(number, [precision=0])` -[#](#_roundnumber-precision0) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15947 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.round "See the npm package") [Ⓣ][1] +

_.round(number, [precision=0])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15948 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.round "See the npm package") [Ⓣ][1] Computes `number` rounded to `precision`. @@ -6531,8 +6542,8 @@ _.round(4060, -2); -### `_.subtract(minuend, subtrahend)` -[#](#_subtractminuend-subtrahend) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15964 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.subtract "See the npm package") [Ⓣ][1] +

_.subtract(minuend, subtrahend)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15965 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.subtract "See the npm package") [Ⓣ][1] Subtract two numbers. @@ -6556,8 +6567,8 @@ _.subtract(6, 4); -### `_.sum(array)` -[#](#_sumarray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15982 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sum "See the npm package") [Ⓣ][1] +

_.sum(array)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15983 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sum "See the npm package") [Ⓣ][1] Computes the sum of the values in `array`. @@ -6580,8 +6591,8 @@ _.sum([4, 2, 8, 6]); -### `_.sumBy(array, [iteratee=_.identity])` -[#](#_sumbyarray-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L16011 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sumby "See the npm package") [Ⓣ][1] +

_.sumBy(array, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L16012 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.sumby "See the npm package") [Ⓣ][1] This method is like `_.sum` except that it accepts `iteratee` which is invoked for each element in `array` to generate the value to be summed. @@ -6619,8 +6630,8 @@ _.sumBy(objects, 'n'); -### `_.clamp(number, [lower], upper)` -[#](#_clampnumber-lower-upper) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13483 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clamp "See the npm package") [Ⓣ][1] +

_.clamp(number, [lower], upper)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13478 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.clamp "See the npm package") [Ⓣ][1] Clamps `number` within the inclusive `lower` and `upper` bounds. @@ -6648,8 +6659,8 @@ _.clamp(10, -5, 5); -### `_.inRange(number, [start=0], end)` -[#](#_inrangenumber-start0-end) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13537 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.inrange "See the npm package") [Ⓣ][1] +

_.inRange(number, [start=0], end)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13532 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.inrange "See the npm package") [Ⓣ][1] Checks if `n` is between `start` and up to, but not including, `end`. If `end` is not specified, it's set to `start` with `start` then set to `0`. @@ -6695,8 +6706,8 @@ _.inRange(-3, -2, -6); -### `_.random([lower=0], [upper=1], [floating])` -[#](#_randomlower0-upper1-floating) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13580 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.random "See the npm package") [Ⓣ][1] +

_.random([lower=0], [upper=1], [floating])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13575 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.random "See the npm package") [Ⓣ][1] Produces a random number between the inclusive `lower` and `upper` bounds. If only one argument is provided a number between `0` and the given number @@ -6743,8 +6754,8 @@ _.random(1.2, 5.2); -### `_.assign(object, [sources])` -[#](#_assignobject-sources) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12118 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assign "See the npm package") [Ⓣ][1] +

_.assign(object, [sources])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12151 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assign "See the npm package") [Ⓣ][1] Assigns own enumerable string keyed properties of source objects to the destination object. Source objects are applied from left to right. @@ -6785,8 +6796,8 @@ _.assign({ 'a': 0 }, new Foo, new Bar); -### `_.assignIn(object, [sources])` -[#](#_assigninobject-sources) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12161 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assignin "See the npm package") [Ⓣ][1] +

_.assignIn(object, [sources])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12194 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assignin "See the npm package") [Ⓣ][1] This method is like `_.assign` except that it iterates over own and inherited source properties. @@ -6828,8 +6839,8 @@ _.assignIn({ 'a': 0 }, new Foo, new Bar); -### `_.assignInWith(object, sources, [customizer])` -[#](#_assigninwithobject-sources-customizer) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12200 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assigninwith "See the npm package") [Ⓣ][1] +

_.assignInWith(object, sources, [customizer])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12227 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assigninwith "See the npm package") [Ⓣ][1] This method is like `_.assignIn` except that it accepts `customizer` which is invoked to produce the assigned values. If `customizer` returns @@ -6869,8 +6880,8 @@ defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); -### `_.assignWith(object, sources, [customizer])` -[#](#_assignwithobject-sources-customizer) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12232 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assignwith "See the npm package") [Ⓣ][1] +

_.assignWith(object, sources, [customizer])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12259 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.assignwith "See the npm package") [Ⓣ][1] This method is like `_.assign` except that it accepts `customizer` which is invoked to produce the assigned values. If `customizer` returns @@ -6907,8 +6918,8 @@ defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); -### `_.at(object, [paths])` -[#](#_atobject-paths) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12253 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.at "See the npm package") [Ⓣ][1] +

_.at(object, [paths])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12280 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.at "See the npm package") [Ⓣ][1] Creates an array of values corresponding to `paths` of `object`. @@ -6934,8 +6945,8 @@ _.at(object, ['a[0].b.c', 'a[1]']); -### `_.create(prototype, [properties])` -[#](#_createprototype-properties) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12291 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.create "See the npm package") [Ⓣ][1] +

_.create(prototype, [properties])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12318 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.create "See the npm package") [Ⓣ][1] Creates an object that inherits from the `prototype` object. If a `properties` object is given, its own enumerable string keyed properties @@ -6978,8 +6989,8 @@ circle instanceof Shape; -### `_.defaults(object, [sources])` -[#](#_defaultsobject-sources) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12317 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defaults "See the npm package") [Ⓣ][1] +

_.defaults(object, [sources])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12344 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defaults "See the npm package") [Ⓣ][1] Assigns own and inherited enumerable string keyed properties of source objects to the destination object for all destination properties that @@ -7009,8 +7020,8 @@ _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); -### `_.defaultsDeep(object, [sources])` -[#](#_defaultsdeepobject-sources) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12341 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defaultsdeep "See the npm package") [Ⓣ][1] +

_.defaultsDeep(object, [sources])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12368 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defaultsdeep "See the npm package") [Ⓣ][1] This method is like `_.defaults` except that it recursively assigns default properties. @@ -7038,8 +7049,8 @@ _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); -### `_.findKey(object, [predicate=_.identity])` -[#](#_findkeyobject-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12381 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findkey "See the npm package") [Ⓣ][1] +

_.findKey(object, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12408 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findkey "See the npm package") [Ⓣ][1] This method is like `_.find` except that it returns the key of the first element `predicate` returns truthy for instead of the element itself. @@ -7082,8 +7093,8 @@ _.findKey(users, 'active'); -### `_.findLastKey(object, [predicate=_.identity])` -[#](#_findlastkeyobject-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12420 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findlastkey "See the npm package") [Ⓣ][1] +

_.findLastKey(object, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12447 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.findlastkey "See the npm package") [Ⓣ][1] This method is like `_.findKey` except that it iterates over elements of a collection in the opposite order. @@ -7126,8 +7137,8 @@ _.findLastKey(users, 'active'); -### `_.forIn(object, [iteratee=_.identity])` -[#](#_forinobject-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12452 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forin "See the npm package") [Ⓣ][1] +

_.forIn(object, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12479 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forin "See the npm package") [Ⓣ][1] Iterates over own and inherited enumerable string keyed properties of an object and invokes `iteratee` for each property. The iteratee is invoked @@ -7163,8 +7174,8 @@ _.forIn(new Foo, function(value, key) { -### `_.forInRight(object, [iteratee=_.identity])` -[#](#_forinrightobject-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12484 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forinright "See the npm package") [Ⓣ][1] +

_.forInRight(object, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12511 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forinright "See the npm package") [Ⓣ][1] This method is like `_.forIn` except that it iterates over properties of `object` in the opposite order. @@ -7198,8 +7209,8 @@ _.forInRight(new Foo, function(value, key) { -### `_.forOwn(object, [iteratee=_.identity])` -[#](#_forownobject-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12518 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forown "See the npm package") [Ⓣ][1] +

_.forOwn(object, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12545 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forown "See the npm package") [Ⓣ][1] Iterates over own enumerable string keyed properties of an object and invokes `iteratee` for each property. The iteratee is invoked with three @@ -7235,8 +7246,8 @@ _.forOwn(new Foo, function(value, key) { -### `_.forOwnRight(object, [iteratee=_.identity])` -[#](#_forownrightobject-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12548 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forownright "See the npm package") [Ⓣ][1] +

_.forOwnRight(object, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12575 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.forownright "See the npm package") [Ⓣ][1] This method is like `_.forOwn` except that it iterates over properties of `object` in the opposite order. @@ -7270,8 +7281,8 @@ _.forOwnRight(new Foo, function(value, key) { -### `_.functions(object)` -[#](#_functionsobject) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12575 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.functions "See the npm package") [Ⓣ][1] +

_.functions(object)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12602 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.functions "See the npm package") [Ⓣ][1] Creates an array of function property names from own enumerable properties of `object`. @@ -7302,8 +7313,8 @@ _.functions(new Foo); -### `_.functionsIn(object)` -[#](#_functionsinobject) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12602 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.functionsin "See the npm package") [Ⓣ][1] +

_.functionsIn(object)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12629 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.functionsin "See the npm package") [Ⓣ][1] Creates an array of function property names from own and inherited enumerable properties of `object`. @@ -7334,8 +7345,8 @@ _.functionsIn(new Foo); -### `_.get(object, path, [defaultValue])` -[#](#_getobject-path-defaultvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12631 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.get "See the npm package") [Ⓣ][1] +

_.get(object, path, [defaultValue])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12658 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.get "See the npm package") [Ⓣ][1] Gets the value at `path` of `object`. If the resolved value is `undefined`, the `defaultValue` is returned in its place. @@ -7369,8 +7380,8 @@ _.get(object, 'a.b.c', 'default'); -### `_.has(object, path)` -[#](#_hasobject-path) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12663 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.has "See the npm package") [Ⓣ][1] +

_.has(object, path)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12690 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.has "See the npm package") [Ⓣ][1] Checks if `path` is a direct property of `object`. @@ -7406,8 +7417,8 @@ _.has(other, 'a'); -### `_.hasIn(object, path)` -[#](#_hasinobject-path) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12693 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.hasin "See the npm package") [Ⓣ][1] +

_.hasIn(object, path)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12720 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.hasin "See the npm package") [Ⓣ][1] Checks if `path` is a direct or inherited property of `object`. @@ -7442,8 +7453,8 @@ _.hasIn(object, 'b'); -### `_.invert(object)` -[#](#_invertobject) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12715 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invert "See the npm package") [Ⓣ][1] +

_.invert(object)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12742 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invert "See the npm package") [Ⓣ][1] Creates an object composed of the inverted keys and values of `object`. If `object` contains duplicate values, subsequent values overwrite @@ -7470,8 +7481,8 @@ _.invert(object); -### `_.invertBy(object, [iteratee=_.identity])` -[#](#_invertbyobject-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12745 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invertby "See the npm package") [Ⓣ][1] +

_.invertBy(object, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12772 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invertby "See the npm package") [Ⓣ][1] This method is like `_.invert` except that the inverted object is generated from the results of running each element of `object` thru `iteratee`. The @@ -7506,8 +7517,8 @@ _.invertBy(object, function(value) { -### `_.invoke(object, path, [args])` -[#](#_invokeobject-path-args) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12771 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invoke "See the npm package") [Ⓣ][1] +

_.invoke(object, path, [args])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12798 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.invoke "See the npm package") [Ⓣ][1] Invokes the method at `path` of `object`. @@ -7534,14 +7545,14 @@ _.invoke(object, 'a[0].b.c.slice', 1, 3); -### `_.keys(object)` -[#](#_keysobject) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12801 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.keys "See the npm package") [Ⓣ][1] +

_.keys(object)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12828 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.keys "See the npm package") [Ⓣ][1] Creates an array of the own enumerable property names of `object`.

**Note:** Non-object values are coerced to objects. See the -[ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) +[ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) for more details. #### Since @@ -7573,8 +7584,8 @@ _.keys('hi'); -### `_.keysIn(object)` -[#](#_keysinobject) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12844 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.keysin "See the npm package") [Ⓣ][1] +

_.keysIn(object)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12855 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.keysin "See the npm package") [Ⓣ][1] Creates an array of the own and inherited enumerable property names of `object`.
@@ -7607,8 +7618,8 @@ _.keysIn(new Foo); -### `_.mapKeys(object, [iteratee=_.identity])` -[#](#_mapkeysobject-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12885 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mapkeys "See the npm package") [Ⓣ][1] +

_.mapKeys(object, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12880 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mapkeys "See the npm package") [Ⓣ][1] The opposite of `_.mapValues`; this method creates an object with the same values as `object` and keys generated by running each own enumerable @@ -7637,8 +7648,8 @@ _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { -### `_.mapValues(object, [iteratee=_.identity])` -[#](#_mapvaluesobject-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12923 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mapvalues "See the npm package") [Ⓣ][1] +

_.mapValues(object, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12918 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mapvalues "See the npm package") [Ⓣ][1] Creates an object with the same keys as `object` and values generated by running each own enumerable string keyed property of `object` thru @@ -7674,8 +7685,8 @@ _.mapValues(users, 'age'); -### `_.merge(object, [sources])` -[#](#_mergeobject-sources) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12964 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.merge "See the npm package") [Ⓣ][1] +

_.merge(object, [sources])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12959 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.merge "See the npm package") [Ⓣ][1] This method is like `_.assign` except that it recursively merges own and inherited enumerable string keyed properties of source objects into the @@ -7716,8 +7727,8 @@ _.merge(object, other); -### `_.mergeWith(object, sources, customizer)` -[#](#_mergewithobject-sources-customizer) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L12999 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mergewith "See the npm package") [Ⓣ][1] +

_.mergeWith(object, sources, customizer)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L12994 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mergewith "See the npm package") [Ⓣ][1] This method is like `_.merge` except that it accepts `customizer` which is invoked to produce the merged values of the destination and source @@ -7758,8 +7769,8 @@ _.mergeWith(object, other, customizer); -### `_.omit(object, [props])` -[#](#_omitobject-props) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13022 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.omit "See the npm package") [Ⓣ][1] +

_.omit(object, [props])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13017 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.omit "See the npm package") [Ⓣ][1] The opposite of `_.pick`; this method creates an object composed of the own and inherited enumerable string keyed properties of `object` that are @@ -7787,8 +7798,8 @@ _.omit(object, ['a', 'c']); -### `_.omitBy(object, [predicate=_.identity])` -[#](#_omitbyobject-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13050 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.omitby "See the npm package") [Ⓣ][1] +

_.omitBy(object, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13045 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.omitby "See the npm package") [Ⓣ][1] The opposite of `_.pickBy`; this method creates an object composed of the own and inherited enumerable string keyed properties of `object` that @@ -7817,8 +7828,8 @@ _.omitBy(object, _.isNumber); -### `_.pick(object, [props])` -[#](#_pickobject-props) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13071 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pick "See the npm package") [Ⓣ][1] +

_.pick(object, [props])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13066 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pick "See the npm package") [Ⓣ][1] Creates an object composed of the picked `object` properties. @@ -7844,8 +7855,8 @@ _.pick(object, ['a', 'c']); -### `_.pickBy(object, [predicate=_.identity])` -[#](#_pickbyobject-predicate_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13093 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pickby "See the npm package") [Ⓣ][1] +

_.pickBy(object, [predicate=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13088 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pickby "See the npm package") [Ⓣ][1] Creates an object composed of the `object` properties `predicate` returns truthy for. The predicate is invoked with two arguments: *(value, key)*. @@ -7872,8 +7883,8 @@ _.pickBy(object, _.isNumber); -### `_.result(object, path, [defaultValue])` -[#](#_resultobject-path-defaultvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13126 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.result "See the npm package") [Ⓣ][1] +

_.result(object, path, [defaultValue])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13121 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.result "See the npm package") [Ⓣ][1] This method is like `_.get` except that if the resolved value is a function it's invoked with the `this` binding of its parent object and @@ -7911,8 +7922,8 @@ _.result(object, 'a[0].b.c3', _.constant('default')); -### `_.set(object, path, value)` -[#](#_setobject-path-value) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13176 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.set "See the npm package") [Ⓣ][1] +

_.set(object, path, value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13171 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.set "See the npm package") [Ⓣ][1] Sets the value at `path` of `object`. If a portion of `path` doesn't exist, it's created. Arrays are created for missing index properties while objects @@ -7950,8 +7961,8 @@ console.log(object.x[0].y.z); -### `_.setWith(object, path, value, [customizer])` -[#](#_setwithobject-path-value-customizer) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13204 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.setwith "See the npm package") [Ⓣ][1] +

_.setWith(object, path, value, [customizer])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13199 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.setwith "See the npm package") [Ⓣ][1] This method is like `_.set` except that it accepts `customizer` which is invoked to produce the objects of `path`. If `customizer` returns `undefined` @@ -7985,8 +7996,8 @@ _.setWith(object, '[0][1]', 'a', Object); -### `_.toPairs(object)` -[#](#_topairsobject) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13233 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.topairs "See the npm package") [Ⓣ][1] +

_.toPairs(object)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13228 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.topairs "See the npm package") [Ⓣ][1] Creates an array of own enumerable string keyed-value pairs for `object` which can be consumed by `_.fromPairs`. If `object` is a map or set, its @@ -8021,8 +8032,8 @@ _.toPairs(new Foo); -### `_.toPairsIn(object)` -[#](#_topairsinobject) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13259 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.topairsin "See the npm package") [Ⓣ][1] +

_.toPairsIn(object)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13254 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.topairsin "See the npm package") [Ⓣ][1] Creates an array of own and inherited enumerable string keyed-value pairs for `object` which can be consumed by `_.fromPairs`. If `object` is a map @@ -8057,8 +8068,8 @@ _.toPairsIn(new Foo); -### `_.transform(object, [iteratee=_.identity], [accumulator])` -[#](#_transformobject-iteratee_identity-accumulator) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13291 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.transform "See the npm package") [Ⓣ][1] +

_.transform(object, [iteratee=_.identity], [accumulator])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13286 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.transform "See the npm package") [Ⓣ][1] An alternative to `_.reduce`; this method transforms `object` to a new `accumulator` object which is the result of running each of its own @@ -8097,8 +8108,8 @@ _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { -### `_.unset(object, path)` -[#](#_unsetobject-path) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13340 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unset "See the npm package") [Ⓣ][1] +

_.unset(object, path)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13335 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unset "See the npm package") [Ⓣ][1] Removes the property at `path` of `object`.
@@ -8135,8 +8146,8 @@ console.log(object); -### `_.update(object, path, updater)` -[#](#_updateobject-path-updater) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13371 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.update "See the npm package") [Ⓣ][1] +

_.update(object, path, updater)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13366 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.update "See the npm package") [Ⓣ][1] This method is like `_.set` except that accepts `updater` to produce the value to set. Use `_.updateWith` to customize `path` creation. The `updater` @@ -8173,8 +8184,8 @@ console.log(object.x[0].y.z); -### `_.updateWith(object, path, updater, [customizer])` -[#](#_updatewithobject-path-updater-customizer) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13399 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.updatewith "See the npm package") [Ⓣ][1] +

_.updateWith(object, path, updater, [customizer])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13394 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.updatewith "See the npm package") [Ⓣ][1] This method is like `_.update` except that it accepts `customizer` which is invoked to produce the objects of `path`. If `customizer` returns `undefined` @@ -8208,8 +8219,8 @@ _.updateWith(object, '[0][1]', _.constant('a'), Object); -### `_.values(object)` -[#](#_valuesobject) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13430 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.values "See the npm package") [Ⓣ][1] +

_.values(object)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13425 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.values "See the npm package") [Ⓣ][1] Creates an array of the own enumerable string keyed property values of `object`.
@@ -8245,8 +8256,8 @@ _.values('hi'); -### `_.valuesIn(object)` -[#](#_valuesinobject) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13458 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.valuesin "See the npm package") [Ⓣ][1] +

_.valuesIn(object)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13453 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.valuesin "See the npm package") [Ⓣ][1] Creates an array of the own and inherited enumerable string keyed property values of `object`. @@ -8286,8 +8297,8 @@ _.valuesIn(new Foo); -### `_(value)` -[#](#_value) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L1522 "View in source") [Ⓣ][1] +

_(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L1520 "View in source") [Ⓣ][1] Creates a `lodash` object which wraps `value` to enable implicit method chain sequences. Methods that operate on and return arrays, collections, @@ -8422,8 +8433,8 @@ _.isArray(squares.value()); -### `_.chain(value)` -[#](#_chainvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8242 "View in source") [Ⓣ][1] +

_.chain(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8272 "View in source") [Ⓣ][1] Creates a `lodash` wrapper instance that wraps `value` with explicit method chain sequences enabled. The result of such sequences must be unwrapped @@ -8461,8 +8472,8 @@ var youngest = _ -### `_.tap(value, interceptor)` -[#](#_tapvalue-interceptor) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8271 "View in source") [Ⓣ][1] +

_.tap(value, interceptor)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8301 "View in source") [Ⓣ][1] This method invokes `interceptor` and returns `value`. The interceptor is invoked with one argument; *(value)*. The purpose of this method is to @@ -8494,8 +8505,8 @@ _([1, 2, 3]) -### `_.thru(value, interceptor)` -[#](#_thruvalue-interceptor) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8299 "View in source") [Ⓣ][1] +

_.thru(value, interceptor)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8329 "View in source") [Ⓣ][1] This method is like `_.tap` except that it returns the result of `interceptor`. The purpose of this method is to "pass thru" values replacing intermediate @@ -8527,8 +8538,8 @@ _(' abc ') -### `_.prototype[Symbol.iterator]()` -[#](#_prototypesymboliterator) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8455 "View in source") [Ⓣ][1] +

_.prototype[Symbol.iterator]()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8485 "View in source") [Ⓣ][1] Enables the wrapper to be iterable. @@ -8553,8 +8564,8 @@ Array.from(wrapped); -### `_.prototype.at([paths])` -[#](#_prototypeatpaths) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8319 "View in source") [Ⓣ][1] +

_.prototype.at([paths])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8349 "View in source") [Ⓣ][1] This method is the wrapper version of `_.at`. @@ -8579,8 +8590,8 @@ _(object).at(['a[0].b.c', 'a[1]']).value(); -### `_.prototype.chain()` -[#](#_prototypechain) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8371 "View in source") [Ⓣ][1] +

_.prototype.chain()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8401 "View in source") [Ⓣ][1] Creates a `lodash` wrapper instance with explicit method chain sequences enabled. @@ -8614,8 +8625,8 @@ _(users) -### `_.prototype.commit()` -[#](#_prototypecommit) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8401 "View in source") [Ⓣ][1] +

_.prototype.commit()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8431 "View in source") [Ⓣ][1] Executes the chain sequence and returns the wrapped result. @@ -8648,8 +8659,8 @@ console.log(array); -### `_.prototype.next()` -[#](#_prototypenext) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8427 "View in source") [Ⓣ][1] +

_.prototype.next()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8457 "View in source") [Ⓣ][1] Gets the next value on a wrapped object following the [iterator protocol](https://mdn.io/iteration_protocols#iterator). @@ -8678,8 +8689,8 @@ wrapped.next(); -### `_.prototype.plant(value)` -[#](#_prototypeplantvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8483 "View in source") [Ⓣ][1] +

_.prototype.plant(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8513 "View in source") [Ⓣ][1] Creates a clone of the chain sequence planting `value` as the wrapped value. @@ -8712,8 +8723,8 @@ wrapped.value(); -### `_.prototype.reverse()` -[#](#_prototypereverse) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8523 "View in source") [Ⓣ][1] +

_.prototype.reverse()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8553 "View in source") [Ⓣ][1] This method is the wrapper version of `_.reverse`.
@@ -8741,8 +8752,8 @@ console.log(array); -### `_.prototype.value()` -[#](#_prototypevalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L8555 "View in source") [Ⓣ][1] +

_.prototype.value()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L8585 "View in source") [Ⓣ][1] Executes the chain sequence to resolve the unwrapped value. @@ -8771,8 +8782,8 @@ _([1, 2, 3]).value(); -### `_.camelCase([string=''])` -[#](#_camelcasestring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13641 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.camelcase "See the npm package") [Ⓣ][1] +

_.camelCase([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13636 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.camelcase "See the npm package") [Ⓣ][1] Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). @@ -8801,8 +8812,8 @@ _.camelCase('__FOO_BAR__'); -### `_.capitalize([string=''])` -[#](#_capitalizestring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13661 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.capitalize "See the npm package") [Ⓣ][1] +

_.capitalize([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13656 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.capitalize "See the npm package") [Ⓣ][1] Converts the first character of `string` to upper case and the remaining to lower case. @@ -8826,8 +8837,8 @@ _.capitalize('FRED'); -### `_.deburr([string=''])` -[#](#_deburrstring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13682 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.deburr "See the npm package") [Ⓣ][1] +

_.deburr([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13677 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.deburr "See the npm package") [Ⓣ][1] Deburrs `string` by converting [latin-1 supplementary letters](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) @@ -8853,8 +8864,8 @@ _.deburr('dĂ©jĂ  vu'); -### `_.endsWith([string=''], [target], [position=string.length])` -[#](#_endswithstring-target-positionstringlength) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13710 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.endswith "See the npm package") [Ⓣ][1] +

_.endsWith([string=''], [target], [position=string.length])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13705 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.endswith "See the npm package") [Ⓣ][1] Checks if `string` ends with the given target string. @@ -8885,8 +8896,8 @@ _.endsWith('abc', 'b', 2); -### `_.escape([string=''])` -[#](#_escapestring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13758 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.escape "See the npm package") [Ⓣ][1] +

_.escape([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13753 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.escape "See the npm package") [Ⓣ][1] Converts the characters "&", "<", ">", '"', "'", and "\`" in `string` to their corresponding HTML entities. @@ -8933,8 +8944,8 @@ _.escape('fred, barney, & pebbles'); -### `_.escapeRegExp([string=''])` -[#](#_escaperegexpstring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13780 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.escaperegexp "See the npm package") [Ⓣ][1] +

_.escapeRegExp([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13775 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.escaperegexp "See the npm package") [Ⓣ][1] Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. @@ -8958,8 +8969,8 @@ _.escapeRegExp('[lodash](https://lodash.com/)'); -### `_.kebabCase([string=''])` -[#](#_kebabcasestring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13808 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.kebabcase "See the npm package") [Ⓣ][1] +

_.kebabCase([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13803 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.kebabcase "See the npm package") [Ⓣ][1] Converts `string` to [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). @@ -8989,8 +9000,8 @@ _.kebabCase('__FOO_BAR__'); -### `_.lowerCase([string=''])` -[#](#_lowercasestring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13832 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lowercase "See the npm package") [Ⓣ][1] +

_.lowerCase([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13827 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lowercase "See the npm package") [Ⓣ][1] Converts `string`, as space separated words, to lower case. @@ -9019,8 +9030,8 @@ _.lowerCase('__FOO_BAR__'); -### `_.lowerFirst([string=''])` -[#](#_lowerfirststring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13853 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lowerfirst "See the npm package") [Ⓣ][1] +

_.lowerFirst([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13848 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.lowerfirst "See the npm package") [Ⓣ][1] Converts the first character of `string` to lower case. @@ -9046,8 +9057,8 @@ _.lowerFirst('FRED'); -### `_.pad([string=''], [length=0], [chars=' '])` -[#](#_padstring-length0-chars) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13878 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pad "See the npm package") [Ⓣ][1] +

_.pad([string=''], [length=0], [chars=' '])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13873 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.pad "See the npm package") [Ⓣ][1] Pads `string` on the left and right sides if it's shorter than `length`. Padding characters are truncated if they can't be evenly divided by `length`. @@ -9079,8 +9090,8 @@ _.pad('abc', 3); -### `_.padEnd([string=''], [length=0], [chars=' '])` -[#](#_padendstring-length0-chars) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13917 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.padend "See the npm package") [Ⓣ][1] +

_.padEnd([string=''], [length=0], [chars=' '])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13912 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.padend "See the npm package") [Ⓣ][1] Pads `string` on the right side if it's shorter than `length`. Padding characters are truncated if they exceed `length`. @@ -9112,8 +9123,8 @@ _.padEnd('abc', 3); -### `_.padStart([string=''], [length=0], [chars=' '])` -[#](#_padstartstring-length0-chars) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13950 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.padstart "See the npm package") [Ⓣ][1] +

_.padStart([string=''], [length=0], [chars=' '])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13945 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.padstart "See the npm package") [Ⓣ][1] Pads `string` on the left side if it's shorter than `length`. Padding characters are truncated if they exceed `length`. @@ -9145,8 +9156,8 @@ _.padStart('abc', 3); -### `_.parseInt(string, [radix=10])` -[#](#_parseintstring-radix10) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L13984 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.parseint "See the npm package") [Ⓣ][1] +

_.parseInt(string, [radix=10])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L13979 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.parseint "See the npm package") [Ⓣ][1] Converts `string` to an integer of the specified radix. If `radix` is `undefined` or `0`, a `radix` of `10` is used unless `value` is a @@ -9179,8 +9190,8 @@ _.map(['6', '08', '10'], _.parseInt); -### `_.repeat([string=''], [n=1])` -[#](#_repeatstring-n1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14018 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.repeat "See the npm package") [Ⓣ][1] +

_.repeat([string=''], [n=1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14013 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.repeat "See the npm package") [Ⓣ][1] Repeats the given string `n` times. @@ -9210,8 +9221,8 @@ _.repeat('abc', 0); -### `_.replace([string=''], pattern, replacement)` -[#](#_replacestring-pattern-replacement) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14046 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.replace "See the npm package") [Ⓣ][1] +

_.replace([string=''], pattern, replacement)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14041 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.replace "See the npm package") [Ⓣ][1] Replaces matches for `pattern` in `string` with `replacement`.
@@ -9240,8 +9251,8 @@ _.replace('Hi Fred', 'Fred', 'Barney'); -### `_.snakeCase([string=''])` -[#](#_snakecasestring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14074 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.snakecase "See the npm package") [Ⓣ][1] +

_.snakeCase([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14069 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.snakecase "See the npm package") [Ⓣ][1] Converts `string` to [snake case](https://en.wikipedia.org/wiki/Snake_case). @@ -9271,8 +9282,8 @@ _.snakeCase('--FOO-BAR--'); -### `_.split([string=''], separator, [limit])` -[#](#_splitstring-separator-limit) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14097 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.split "See the npm package") [Ⓣ][1] +

_.split([string=''], separator, [limit])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14092 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.split "See the npm package") [Ⓣ][1] Splits `string` by `separator`.
@@ -9301,8 +9312,8 @@ _.split('a-b-c', '-', 2); -### `_.startCase([string=''])` -[#](#_startcasestring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14139 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.startcase "See the npm package") [Ⓣ][1] +

_.startCase([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14134 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.startcase "See the npm package") [Ⓣ][1] Converts `string` to [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). @@ -9332,8 +9343,8 @@ _.startCase('__FOO_BAR__'); -### `_.startsWith([string=''], [target], [position=0])` -[#](#_startswithstring-target-position0) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14166 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.startswith "See the npm package") [Ⓣ][1] +

_.startsWith([string=''], [target], [position=0])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14161 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.startswith "See the npm package") [Ⓣ][1] Checks if `string` starts with the given target string. @@ -9364,8 +9375,8 @@ _.startsWith('abc', 'b', 1); -### `_.template([string=''], [options={}], [options.escape=_.templateSettings.escape], [options.evaluate=_.templateSettings.evaluate], [options.imports=_.templateSettings.imports], [options.interpolate=_.templateSettings.interpolate], [options.sourceURL='lodash.templateSources[n]'], [options.variable='obj'])` -[#](#_templatestring-options-optionsescape_templatesettingsescape-optionsevaluate_templatesettingsevaluate-optionsimports_templatesettingsimports-optionsinterpolate_templatesettingsinterpolate-optionssourceurllodashtemplatesourcesn-optionsvariableobj) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14276 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.template "See the npm package") [Ⓣ][1] +

_.template([string=''], [options={}], [options.escape=_.templateSettings.escape], [options.evaluate=_.templateSettings.evaluate], [options.imports=_.templateSettings.imports], [options.interpolate=_.templateSettings.interpolate], [options.sourceURL='lodash.templateSources[n]'], [options.variable='obj'])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14271 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.template "See the npm package") [Ⓣ][1] Creates a compiled template function that can interpolate data properties in "interpolate" delimiters, HTML-escape interpolated data properties in @@ -9473,8 +9484,8 @@ fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\ -### `_.toLower([string=''])` -[#](#_tolowerstring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14405 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tolower "See the npm package") [Ⓣ][1] +

_.toLower([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14400 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.tolower "See the npm package") [Ⓣ][1] Converts `string`, as a whole, to lower case just like [String#toLowerCase](https://mdn.io/toLowerCase). @@ -9504,8 +9515,8 @@ _.toLower('__FOO_BAR__'); -### `_.toUpper([string=''])` -[#](#_toupperstring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14430 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.toupper "See the npm package") [Ⓣ][1] +

_.toUpper([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14425 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.toupper "See the npm package") [Ⓣ][1] Converts `string`, as a whole, to upper case just like [String#toUpperCase](https://mdn.io/toUpperCase). @@ -9535,8 +9546,8 @@ _.toUpper('__foo_bar__'); -### `_.trim([string=''], [chars=whitespace])` -[#](#_trimstring-charswhitespace) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14456 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.trim "See the npm package") [Ⓣ][1] +

_.trim([string=''], [chars=whitespace])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14451 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.trim "See the npm package") [Ⓣ][1] Removes leading and trailing whitespace or specified characters from `string`. @@ -9566,8 +9577,8 @@ _.map([' foo ', ' bar '], _.trim); -### `_.trimEnd([string=''], [chars=whitespace])` -[#](#_trimendstring-charswhitespace) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14491 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.trimend "See the npm package") [Ⓣ][1] +

_.trimEnd([string=''], [chars=whitespace])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14486 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.trimend "See the npm package") [Ⓣ][1] Removes trailing whitespace or specified characters from `string`. @@ -9594,8 +9605,8 @@ _.trimEnd('-_-abc-_-', '_-'); -### `_.trimStart([string=''], [chars=whitespace])` -[#](#_trimstartstring-charswhitespace) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14524 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.trimstart "See the npm package") [Ⓣ][1] +

_.trimStart([string=''], [chars=whitespace])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14519 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.trimstart "See the npm package") [Ⓣ][1] Removes leading whitespace or specified characters from `string`. @@ -9622,8 +9633,8 @@ _.trimStart('-_-abc-_-', '_-'); -### `_.truncate([string=''], [options={}], [options.length=30], [options.omission='...'], [options.separator])` -[#](#_truncatestring-options-optionslength30-optionsomission-optionsseparator) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14575 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.truncate "See the npm package") [Ⓣ][1] +

_.truncate([string=''], [options={}], [options.length=30], [options.omission='...'], [options.separator])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14570 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.truncate "See the npm package") [Ⓣ][1] Truncates `string` if it's longer than the given maximum string length. The last characters of the truncated string are replaced with the omission @@ -9669,8 +9680,8 @@ _.truncate('hi-diddly-ho there, neighborino', { -### `_.unescape([string=''])` -[#](#_unescapestring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14650 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unescape "See the npm package") [Ⓣ][1] +

_.unescape([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14645 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.unescape "See the npm package") [Ⓣ][1] The inverse of `_.escape`; this method converts the HTML entities `&`, `<`, `>`, `"`, `'`, and ``` in `string` to @@ -9699,8 +9710,8 @@ _.unescape('fred, barney, & pebbles'); -### `_.upperCase([string=''])` -[#](#_uppercasestring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14677 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uppercase "See the npm package") [Ⓣ][1] +

_.upperCase([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14672 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uppercase "See the npm package") [Ⓣ][1] Converts `string`, as space separated words, to upper case. @@ -9729,8 +9740,8 @@ _.upperCase('__foo_bar__'); -### `_.upperFirst([string=''])` -[#](#_upperfirststring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14698 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.upperfirst "See the npm package") [Ⓣ][1] +

_.upperFirst([string=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14693 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.upperfirst "See the npm package") [Ⓣ][1] Converts the first character of `string` to upper case. @@ -9756,8 +9767,8 @@ _.upperFirst('FRED'); -### `_.words([string=''], [pattern])` -[#](#_wordsstring-pattern) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14719 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.words "See the npm package") [Ⓣ][1] +

_.words([string=''], [pattern])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14714 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.words "See the npm package") [Ⓣ][1] Splits `string` into an array of its words. @@ -9790,8 +9801,8 @@ _.words('fred, barney, & pebbles', /[^, ]+/g); -### `_.attempt(func, [args])` -[#](#_attemptfunc-args) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14753 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.attempt "See the npm package") [Ⓣ][1] +

_.attempt(func, [args])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14748 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.attempt "See the npm package") [Ⓣ][1] Attempts to invoke `func`, returning either the result or the caught error object. Any additional arguments are provided to `func` when it's invoked. @@ -9822,8 +9833,8 @@ if (_.isError(elements)) { -### `_.bindAll(object, methodNames)` -[#](#_bindallobject-methodnames) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14787 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.bindall "See the npm package") [Ⓣ][1] +

_.bindAll(object, methodNames)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14782 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.bindall "See the npm package") [Ⓣ][1] Binds methods of an object to the object itself, overwriting the existing method. @@ -9859,8 +9870,8 @@ jQuery(element).on('click', view.click); -### `_.cond(pairs)` -[#](#_condpairs) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14824 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.cond "See the npm package") [Ⓣ][1] +

_.cond(pairs)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14819 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.cond "See the npm package") [Ⓣ][1] Creates a function that iterates over `pairs` and invokes the corresponding function of the first predicate to return truthy. The predicate-function @@ -9898,8 +9909,8 @@ func({ 'a': '1', 'b': '2' }); -### `_.conforms(source)` -[#](#_conformssource) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14870 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.conforms "See the npm package") [Ⓣ][1] +

_.conforms(source)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14865 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.conforms "See the npm package") [Ⓣ][1] Creates a function that invokes the predicate properties of `source` with the corresponding property values of a given object, returning `true` if @@ -9933,8 +9944,8 @@ _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } })); -### `_.constant(value)` -[#](#_constantvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14893 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.constant "See the npm package") [Ⓣ][1] +

_.constant(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14888 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.constant "See the npm package") [Ⓣ][1] Creates a function that returns `value`. @@ -9962,8 +9973,8 @@ console.log(objects[0] === objects[1]); -### `_.defaultTo(value, defaultValue)` -[#](#_defaulttovalue-defaultvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14919 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defaultto "See the npm package") [Ⓣ][1] +

_.defaultTo(value, defaultValue)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14914 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.defaultto "See the npm package") [Ⓣ][1] Checks `value` to determine whether a default value should be returned in its place. The `defaultValue` is returned if `value` is `NaN`, `null`, @@ -9992,8 +10003,8 @@ _.defaultTo(undefined, 10); -### `_.flow([funcs])` -[#](#_flowfuncs) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14945 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flow "See the npm package") [Ⓣ][1] +

_.flow([funcs])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14940 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flow "See the npm package") [Ⓣ][1] Creates a function that returns the result of invoking the given functions with the `this` binding of the created function, where each successive @@ -10023,8 +10034,8 @@ addSquare(1, 2); -### `_.flowRight([funcs])` -[#](#_flowrightfuncs) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14968 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flowright "See the npm package") [Ⓣ][1] +

_.flowRight([funcs])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14963 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.flowright "See the npm package") [Ⓣ][1] This method is like `_.flow` except that it creates a function that invokes the given functions from right to left. @@ -10053,8 +10064,8 @@ addSquare(1, 2); -### `_.identity(value)` -[#](#_identityvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L14986 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.identity "See the npm package") [Ⓣ][1] +

_.identity(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L14981 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.identity "See the npm package") [Ⓣ][1] This method returns the first argument it receives. @@ -10079,8 +10090,8 @@ console.log(_.identity(object) === object); -### `_.iteratee([func=_.identity])` -[#](#_iterateefunc_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15032 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.iteratee "See the npm package") [Ⓣ][1] +

_.iteratee([func=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15027 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.iteratee "See the npm package") [Ⓣ][1] Creates a function that invokes `func` with the arguments of the created function. If `func` is a property name, the created function returns the @@ -10131,16 +10142,21 @@ _.filter(['abc', 'def'], /ef/); -### `_.matches(source)` -[#](#_matchessource) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15060 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.matches "See the npm package") [Ⓣ][1] +

_.matches(source)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15059 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.matches "See the npm package") [Ⓣ][1] Creates a function that performs a partial deep comparison between a given object and `source`, returning `true` if the given object has equivalent property values, else `false`.

-**Note:** The created function supports comparing the same values as -`_.isEqual` is equivalent to `_.isMatch` with `source` partially applied. +**Note:** The created function is equivalent to `_.isMatch` with `source` +partially applied. +
+
+Partial comparisons will match empty array and empty object `source` +values against any array or object value, respectively. See `_.isEqual` +for a list of supported value comparisons. #### Since 3.0.0 @@ -10166,15 +10182,17 @@ _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); -### `_.matchesProperty(path, srcValue)` -[#](#_matchespropertypath-srcvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15088 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.matchesproperty "See the npm package") [Ⓣ][1] +

_.matchesProperty(path, srcValue)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15089 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.matchesproperty "See the npm package") [Ⓣ][1] Creates a function that performs a partial deep comparison between the value at `path` of a given object to `srcValue`, returning `true` if the object value is equivalent, else `false`.

-**Note:** This method supports comparing the same values as `_.isEqual`. +**Note:** Partial comparisons will match empty array and empty object +`srcValue` values against any array or object value, respectively. See +`_.isEqual` for a list of supported value comparisons. #### Since 3.2.0 @@ -10201,8 +10219,8 @@ _.find(objects, _.matchesProperty('a', 4)); -### `_.method(path, [args])` -[#](#_methodpath-args) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15116 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.method "See the npm package") [Ⓣ][1] +

_.method(path, [args])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15117 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.method "See the npm package") [Ⓣ][1] Creates a function that invokes the method at `path` of a given object. Any additional arguments are provided to the invoked method. @@ -10235,8 +10253,8 @@ _.map(objects, _.method(['a', 'b'])); -### `_.methodOf(object, [args])` -[#](#_methodofobject-args) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15145 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.methodof "See the npm package") [Ⓣ][1] +

_.methodOf(object, [args])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15146 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.methodof "See the npm package") [Ⓣ][1] The opposite of `_.method`; this method creates a function that invokes the method at a given path of `object`. Any additional arguments are @@ -10268,8 +10286,8 @@ _.map([['a', '2'], ['c', '0']], _.methodOf(object)); -### `_.mixin([object=lodash], source, [options={}], [options.chain=true])` -[#](#_mixinobjectlodash-source-options-optionschaintrue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15187 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mixin "See the npm package") [Ⓣ][1] +

_.mixin([object=lodash], source, [options={}], [options.chain=true])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15188 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.mixin "See the npm package") [Ⓣ][1] Adds all own enumerable string keyed function properties of a source object to the destination object. If `object` is a function, then methods @@ -10315,8 +10333,8 @@ _('fred').vowels(); -### `_.noConflict()` -[#](#_noconflict) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15236 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.noconflict "See the npm package") [Ⓣ][1] +

_.noConflict()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15237 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.noconflict "See the npm package") [Ⓣ][1] Reverts the `_` variable to its previous value and returns a reference to the `lodash` function. @@ -10336,8 +10354,8 @@ var lodash = _.noConflict(); -### `_.noop()` -[#](#_noop) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15255 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.noop "See the npm package") [Ⓣ][1] +

_.noop()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15256 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.noop "See the npm package") [Ⓣ][1] This method returns `undefined`. @@ -10354,8 +10372,8 @@ _.times(2, _.noop); -### `_.nthArg([n=0])` -[#](#_nthargn0) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15279 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ntharg "See the npm package") [Ⓣ][1] +

_.nthArg([n=0])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15280 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.ntharg "See the npm package") [Ⓣ][1] Creates a function that gets the argument at index `n`. If `n` is negative, the nth argument from the end is returned. @@ -10384,8 +10402,8 @@ func('a', 'b', 'c', 'd'); -### `_.over([iteratees=[_.identity]])` -[#](#_overiteratees_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15304 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.over "See the npm package") [Ⓣ][1] +

_.over([iteratees=[_.identity]])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15305 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.over "See the npm package") [Ⓣ][1] Creates a function that invokes `iteratees` with the arguments it receives and returns their results. @@ -10411,8 +10429,8 @@ func(1, 2, 3, 4); -### `_.overEvery([predicates=[_.identity]])` -[#](#_overeverypredicates_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15330 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.overevery "See the npm package") [Ⓣ][1] +

_.overEvery([predicates=[_.identity]])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15331 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.overevery "See the npm package") [Ⓣ][1] Creates a function that checks if **all** of the `predicates` return truthy when invoked with the arguments it receives. @@ -10444,8 +10462,8 @@ func(NaN); -### `_.overSome([predicates=[_.identity]])` -[#](#_oversomepredicates_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15356 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.oversome "See the npm package") [Ⓣ][1] +

_.overSome([predicates=[_.identity]])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15357 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.oversome "See the npm package") [Ⓣ][1] Creates a function that checks if **any** of the `predicates` return truthy when invoked with the arguments it receives. @@ -10477,8 +10495,8 @@ func(NaN); -### `_.property(path)` -[#](#_propertypath) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15380 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.property "See the npm package") [Ⓣ][1] +

_.property(path)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15381 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.property "See the npm package") [Ⓣ][1] Creates a function that returns the value at `path` of a given object. @@ -10509,8 +10527,8 @@ _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); -### `_.propertyOf(object)` -[#](#_propertyofobject) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15405 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.propertyof "See the npm package") [Ⓣ][1] +

_.propertyOf(object)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15406 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.propertyof "See the npm package") [Ⓣ][1] The opposite of `_.property`; this method creates a function that returns the value at a given path of `object`. @@ -10540,8 +10558,8 @@ _.map([['a', '2'], ['c', '0']], _.propertyOf(object)); -### `_.range([start=0], end, [step=1])` -[#](#_rangestart0-end-step1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15452 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.range "See the npm package") [Ⓣ][1] +

_.range([start=0], end, [step=1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15453 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.range "See the npm package") [Ⓣ][1] Creates an array of numbers *(positive and/or negative)* progressing from `start` up to, but not including, `end`. A step of `-1` is used if a negative @@ -10591,8 +10609,8 @@ _.range(0); -### `_.rangeRight([start=0], end, [step=1])` -[#](#_rangerightstart0-end-step1) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15490 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.rangeright "See the npm package") [Ⓣ][1] +

_.rangeRight([start=0], end, [step=1])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15491 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.rangeright "See the npm package") [Ⓣ][1] This method is like `_.range` except that it populates values in descending order. @@ -10636,8 +10654,8 @@ _.rangeRight(0); -### `_.runInContext([context=root])` -[#](#_runincontextcontextroot) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L1280 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.runincontext "See the npm package") [Ⓣ][1] +

_.runInContext([context=root])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L1280 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.runincontext "See the npm package") [Ⓣ][1] Create a new pristine `lodash` function using the `context` object. @@ -10682,8 +10700,8 @@ var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; -### `_.stubArray()` -[#](#_stubarray) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15510 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubarray "See the npm package") [Ⓣ][1] +

_.stubArray()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15511 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubarray "See the npm package") [Ⓣ][1] This method returns a new empty array. @@ -10708,8 +10726,8 @@ console.log(arrays[0] === arrays[1]); -### `_.stubFalse()` -[#](#_stubfalse) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15527 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubfalse "See the npm package") [Ⓣ][1] +

_.stubFalse()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15528 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubfalse "See the npm package") [Ⓣ][1] This method returns `false`. @@ -10729,8 +10747,8 @@ _.times(2, _.stubFalse); -### `_.stubObject()` -[#](#_stubobject) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15549 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubobject "See the npm package") [Ⓣ][1] +

_.stubObject()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15550 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubobject "See the npm package") [Ⓣ][1] This method returns a new empty object. @@ -10755,8 +10773,8 @@ console.log(objects[0] === objects[1]); -### `_.stubString()` -[#](#_stubstring) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15566 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubstring "See the npm package") [Ⓣ][1] +

_.stubString()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15567 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubstring "See the npm package") [Ⓣ][1] This method returns an empty string. @@ -10776,8 +10794,8 @@ _.times(2, _.stubString); -### `_.stubTrue()` -[#](#_stubtrue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15583 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubtrue "See the npm package") [Ⓣ][1] +

_.stubTrue()

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15584 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.stubtrue "See the npm package") [Ⓣ][1] This method returns `true`. @@ -10797,8 +10815,8 @@ _.times(2, _.stubTrue); -### `_.times(n, [iteratee=_.identity])` -[#](#_timesn-iteratee_identity) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15606 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.times "See the npm package") [Ⓣ][1] +

_.times(n, [iteratee=_.identity])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15607 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.times "See the npm package") [Ⓣ][1] Invokes the iteratee `n` times, returning an array of the results of each invocation. The iteratee is invoked with one argument; *(index)*. @@ -10826,8 +10844,8 @@ _.times(3, String); -### `_.toPath(value)` -[#](#_topathvalue) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15641 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.topath "See the npm package") [Ⓣ][1] +

_.toPath(value)

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15642 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.topath "See the npm package") [Ⓣ][1] Converts `value` to a property path array. @@ -10853,8 +10871,8 @@ _.toPath('a[0].b.c'); -### `_.uniqueId([prefix=''])` -[#](#_uniqueidprefix) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L15665 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniqueid "See the npm package") [Ⓣ][1] +

_.uniqueId([prefix=''])

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L15666 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.uniqueid "See the npm package") [Ⓣ][1] Generates a unique ID. If `prefix` is given, the ID is appended to it. @@ -10886,8 +10904,8 @@ _.uniqueId(); -### `_.VERSION` -[#](#_version) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L16356 "View in source") [Ⓣ][1] +

_.VERSION

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L16357 "View in source") [Ⓣ][1] (string): The semantic version number. @@ -10897,8 +10915,8 @@ _.uniqueId(); -### `_.templateSettings` -[#](#_templatesettings) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L1567 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.templatesettings "See the npm package") [Ⓣ][1] +

_.templateSettings

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L1565 "View in source") [Ⓝ](https://www.npmjs.com/package/lodash.templatesettings "See the npm package") [Ⓣ][1] (Object): By default, the template delimiters used by lodash are like those in embedded Ruby *(ERB)*. Change the following template settings to use @@ -10910,8 +10928,8 @@ alternative delimiters. -### `_.templateSettings.escape` -[#](#_templatesettingsescape) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L1575 "View in source") [Ⓣ][1] +

_.templateSettings.escape

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L1573 "View in source") [Ⓣ][1] (RegExp): Used to detect `data` property values to be HTML-escaped. @@ -10921,8 +10939,8 @@ alternative delimiters. -### `_.templateSettings.evaluate` -[#](#_templatesettingsevaluate) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L1583 "View in source") [Ⓣ][1] +

_.templateSettings.evaluate

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L1581 "View in source") [Ⓣ][1] (RegExp): Used to detect code to be evaluated. @@ -10932,8 +10950,8 @@ alternative delimiters. -### `_.templateSettings.imports` -[#](#_templatesettingsimports) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L1607 "View in source") [Ⓣ][1] +

_.templateSettings.imports

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L1605 "View in source") [Ⓣ][1] (Object): Used to import variables into the compiled template. @@ -10943,8 +10961,8 @@ alternative delimiters. -### `_.templateSettings.interpolate` -[#](#_templatesettingsinterpolate) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L1591 "View in source") [Ⓣ][1] +

_.templateSettings.interpolate

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L1589 "View in source") [Ⓣ][1] (RegExp): Used to detect `data` property values to inject. @@ -10954,8 +10972,8 @@ alternative delimiters. -### `_.templateSettings.variable` -[#](#_templatesettingsvariable) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L1599 "View in source") [Ⓣ][1] +

_.templateSettings.variable

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L1597 "View in source") [Ⓣ][1] (string): Used to reference the data object in the template text. @@ -10971,8 +10989,8 @@ alternative delimiters. -### `_.templateSettings.imports._` -[#](#_templatesettingsimports_) [Ⓢ](https://github.com/lodash/lodash/blob/4.14.1/lodash.js#L1615 "View in source") [Ⓣ][1] +

_.templateSettings.imports._

+[Ⓢ](https://github.com/lodash/lodash/blob/4.14.2/lodash.js#L1613 "View in source") [Ⓣ][1] A reference to the `lodash` function. diff --git a/fp/_baseConvert.js b/fp/_baseConvert.js index d294820d8c..0def5f67cb 100644 --- a/fp/_baseConvert.js +++ b/fp/_baseConvert.js @@ -143,6 +143,7 @@ function baseConvert(util, name, func, options) { 'keys': util.keys, 'rearg': util.rearg, 'spread': util.spread, + 'toInteger': util.toInteger, 'toPath': util.toPath }; @@ -156,6 +157,7 @@ function baseConvert(util, name, func, options) { keys = helpers.keys, rearg = helpers.rearg, spread = helpers.spread, + toInteger = helpers.toInteger, toPath = helpers.toPath; var aryMethodKeys = keys(mapping.aryMethod); @@ -209,10 +211,16 @@ function baseConvert(util, name, func, options) { return func; }; }, + 'nthArg': function(nthArg) { + return function(n) { + var arity = n < 0 ? 1 : (toInteger(n) + 1); + return curry(nthArg(n), arity); + }; + }, 'rearg': function(rearg) { return function(func, indexes) { - var n = indexes ? indexes.length : 0; - return curry(rearg(func, indexes), n); + var arity = indexes ? indexes.length : 0; + return curry(rearg(func, indexes), arity); }; }, 'runInContext': function(runInContext) { diff --git a/fp/_mapping.js b/fp/_mapping.js index cb36eedad1..dd4abcb551 100644 --- a/fp/_mapping.js +++ b/fp/_mapping.js @@ -73,10 +73,10 @@ exports.aryMethod = { '1': [ 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create', 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow', - 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', - 'mergeAll', 'methodOf', 'mixin', 'over', 'overEvery', 'overSome', 'rest', - 'reverse', 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', - 'trimStart', 'uniqueId', 'words', 'zipAll' + 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll', + 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse', + 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart', + 'uniqueId', 'words', 'zipAll' ], '2': [ 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith', diff --git a/lib/fp/build-dist.js b/lib/fp/build-dist.js index 6c68c99233..e4764c6d71 100644 --- a/lib/fp/build-dist.js +++ b/lib/fp/build-dist.js @@ -42,6 +42,7 @@ var mappingConfig = { /** * Creates browser builds of the FP converter and mappings at the `target` path. * + * @private * @param {string} target The output directory path. */ function build() { diff --git a/lib/fp/build-doc.js b/lib/fp/build-doc.js index ff151ecd85..6edd802a2b 100644 --- a/lib/fp/build-doc.js +++ b/lib/fp/build-doc.js @@ -23,6 +23,7 @@ var templateData = { * Converts arranged argument `indexes` into a named argument string * representation of their order. * + * @private * @param {number[]} indexes The arranged argument indexes. * @returns {string} Returns the named argument string. */ @@ -37,6 +38,7 @@ function toArgOrder(indexes) { /** * Converts `funcNames` into a chunked list string representation. * + * @private * @param {string[]} funcNames The function names. * @returns {string} Returns the function list string. */ @@ -68,6 +70,7 @@ function toFuncList(funcNames) { /** * Creates the FP-Guide wiki at the `target` path. * + * @private * @param {string} target The output file path. */ function build(target) { diff --git a/lib/fp/build-modules.js b/lib/fp/build-modules.js index 82b379c5e9..9578499e79 100644 --- a/lib/fp/build-modules.js +++ b/lib/fp/build-modules.js @@ -46,6 +46,7 @@ var ignored = [ /** * Checks if `name` is a method alias. * + * @private * @param {string} name The name to check. * @returns {boolean} Returns `true` if `name` is a method alias, else `false`. */ @@ -56,6 +57,7 @@ function isAlias(name) { /** * Checks if `name` is a category name. * + * @private * @param {string} name The name to check. * @returns {boolean} Returns `true` if `name` is a category name, else `false`. */ @@ -66,6 +68,7 @@ function isCategory(name) { /** * Checks if `name` belongs to a method that's passed thru and not wrapped. * + * @private * @param {string} name The name to check. * @returns {boolean} Returns `true` if `name` is of a pass thru method, * else `false`. @@ -104,6 +107,7 @@ function getTemplate(moduleName) { /** * Creates FP modules at the `target` path. * + * @private * @param {string} target The output directory path. */ function build(target) { diff --git a/lib/fp/template/modules/_util.jst b/lib/fp/template/modules/_util.jst index d450396fc4..f8148129eb 100644 --- a/lib/fp/template/modules/_util.jst +++ b/lib/fp/template/modules/_util.jst @@ -10,5 +10,6 @@ module.exports = { 'keys': require('../_baseKeys'), 'rearg': require('../rearg'), 'spread': require('../spread'), + 'toInteger': require('../toInteger'), 'toPath': require('../toPath') }; diff --git a/lib/main/build-dist.js b/lib/main/build-dist.js index b91f1474c2..137b6915ed 100644 --- a/lib/main/build-dist.js +++ b/lib/main/build-dist.js @@ -18,6 +18,7 @@ var baseLodash = path.join(basePath, filename), /** * Creates browser builds of Lodash at the `target` path. * + * @private * @param {string} target The output directory path. */ function build() { diff --git a/lib/main/build-doc.js b/lib/main/build-doc.js index 95dca8eef3..94003448bf 100644 --- a/lib/main/build-doc.js +++ b/lib/main/build-doc.js @@ -16,28 +16,47 @@ var pkg = require('../../package.json'), var config = { 'base': { - 'entryLinks': [ - '<% if (name == "templateSettings" || !/^(?:methods|properties|seq)$/i.test(category)) {' + - 'print("[npm package](https://www.npmjs.com/package/lodash." + name.toLowerCase() + ")")' + - '} %>' - ], 'path': path.join(basePath, 'lodash.js'), - 'sourceLink': '[source](${sourceHref})', 'title': 'lodash v' + version + '', 'toc': 'categories', 'url': 'https://github.com/lodash/lodash/blob/' + version + '/lodash.js' }, 'github': { - 'hash': 'github' + 'style': 'github', + 'sublinks': [npmLink('Ⓝ', 'See the npm package')] }, 'site': { - 'tocHref': '#docs' + 'entryLink': '', + 'sourceLink': '[source](${sourceHref})', + 'tocHref': '', + 'tocLink': '', + 'sublinks': [npmLink('npm package')] } }; +/** + * Composes a npm link from `text` and optional `title`. + * + * @private + * @param {string} text The link text. + * @param {string} [title] The link title. + * @returns {string} Returns the composed npm link. + */ +function npmLink(text, title) { + return ( + '<% if (name == "templateSettings" || !/^(?:methods|properties|seq)$/i.test(category)) {' + + 'print(' + + '"[' + text + '](https://www.npmjs.com/package/lodash." + name.toLowerCase() + ' + + '"' + (title == null ? '' : ' \\"' + title + '\\"') + ')"' + + ');' + + '} %>' + ); +} + /** * Post-process `markdown` to make adjustments. * + * @private * @param {string} markdown The markdown to process. * @returns {string} Returns the processed markdown. */ @@ -51,6 +70,7 @@ function postprocess(markdown) { /** * Creates the documentation markdown formatted for 'github' or 'site'. * + * @private * @param {string} type The format type. */ function build(type) { diff --git a/lib/main/build-modules.js b/lib/main/build-modules.js index 284b3ae231..e9e3f365b0 100644 --- a/lib/main/build-modules.js +++ b/lib/main/build-modules.js @@ -21,6 +21,7 @@ var filePairs = [ /** * Creates supplementary Lodash modules at the `target` path. * + * @private * @param {string} target The output directory path. */ function build(target) { diff --git a/lib/main/build-site.js b/lib/main/build-site.js index 70d524bbaf..37c1ab0459 100644 --- a/lib/main/build-site.js +++ b/lib/main/build-site.js @@ -11,9 +11,10 @@ var basePath = path.join(__dirname, '..', '..'), readmePath = path.join(docPath, 'README.md'); function build(type) { - // Load markdown and uncomment docdown HTML hints. var markdown = fs + // Load markdown. .readFileSync(readmePath, 'utf8') + // Uncomment docdown HTML hints. .replace(/(<)!--\s*|\s*--(>)/g, '$1$2'); var $ = marky(markdown, { 'sanitize': false }), @@ -23,21 +24,35 @@ function build(type) { // Remove docdown horizontal rules. $('hr').remove(); - // Remove table of contents (toc) links. - $('a[href="#docs"]').remove(); - // Remove marky-markdown additions. $('[id^="user-content-"]') .attr('class', null) .attr('id', null); - $(':header > a[href]').each(function() { + $(':header:not(h3) > a').each(function() { var $a = $(this); $a.replaceWith($a.html()); }); - // Append YAML front matter. + // Fix marky-markdown wrapping around headers. + $('p:empty + h3').prev().remove(); + + $('h3 ~ p:empty').each(function() { + var $p = $(this), + node = this.previousSibling; + + while ((node = node.previousSibling) && node.name != 'h3' && node.name != 'p') { + $p.prepend(node.nextSibling); + } + }); + + $('h3 code em').parent().each(function() { + var $code = $(this); + $code.html($code.html().replace(/<\/?em>/g, '_')); + }); + var html = [ + // Append YAML front matter. '---', 'id: docs', 'layout: docs', @@ -45,7 +60,11 @@ function build(type) { 'version: ' + (version || null), '---', '', + // Wrap in raw tags to avoid Liquid template tag processing. + '{% raw %}', _.trim($.html()), + '{% endraw %}', + '' ].join('\n'); fs.writeFile(path.join(docPath, version + '.html'), html, util.pitch); diff --git a/lodash.js b/lodash.js index 22e73749bd..47e584660b 100644 --- a/lodash.js +++ b/lodash.js @@ -12,7 +12,7 @@ var undefined; /** Used as the semantic version number. */ - var VERSION = '4.14.1'; + var VERSION = '4.14.2'; /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; @@ -134,7 +134,7 @@ /** * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns). + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). */ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source); @@ -157,7 +157,7 @@ /** * Used to match - * [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components). + * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). */ var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; @@ -266,9 +266,9 @@ var contextProps = [ 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', - 'Promise', 'Reflect', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', - 'Uint8Array', 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', - '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' + 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', '_', 'clearTimeout', + 'isFinite', 'parseInt', 'setTimeout' ]; /** Used to make template sourceURLs easier to identify. */ @@ -1129,7 +1129,7 @@ } /** - * Creates a function that invokes `func` with its first argument transformed. + * Creates a unary function that invokes `func` with its argument transformed. * * @private * @param {Function} func The function to wrap. @@ -1282,7 +1282,6 @@ /** Built-in constructor references. */ var Array = context.Array, - Date = context.Date, Error = context.Error, Math = context.Math, RegExp = context.RegExp, @@ -1316,7 +1315,7 @@ /** * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) * of values. */ var objectToString = objectProto.toString; @@ -1332,29 +1331,28 @@ /** Built-in value references. */ var Buffer = moduleExports ? context.Buffer : undefined, - Reflect = context.Reflect, Symbol = context.Symbol, Uint8Array = context.Uint8Array, - enumerate = Reflect ? Reflect.enumerate : undefined, + getPrototype = overArg(Object.getPrototypeOf, Object), iteratorSymbol = Symbol ? Symbol.iterator : undefined, objectCreate = context.Object.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; - /** Built-in method references that are mockable. */ - var clearTimeout = function(id) { return context.clearTimeout.call(root, id); }, - setTimeout = function(func, wait) { return context.setTimeout.call(root, func, wait); }; + /** Mocked built-ins. */ + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, + ctxNow = context.Date && context.Date.now !== root.Date.now && context.Date.now, + ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeCeil = Math.ceil, nativeFloor = Math.floor, - nativeGetPrototype = Object.getPrototypeOf, nativeGetSymbols = Object.getOwnPropertySymbols, nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, - nativeKeys = Object.keys, + nativeKeys = overArg(Object.keys, Object), nativeMax = Math.max, nativeMin = Math.min, nativeParseInt = context.parseInt, @@ -2201,6 +2199,31 @@ /*------------------------------------------------------------------------*/ + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var result = (isArray(value) || isString(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; + + var length = result.length, + skipIndexes = !!length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + return result; + } + /** * Used by `_.defaults` to customize its `_.assignIn` use. * @@ -2237,7 +2260,7 @@ /** * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. * * @private @@ -2445,14 +2468,13 @@ if (object == null) { return !length; } - var index = length; - while (index--) { - var key = props[index], + object = Object(object); + while (length--) { + var key = props[length], predicate = source[key], value = object[key]; - if ((value === undefined && - !(key in Object(object))) || !predicate(value)) { + if ((value === undefined && !(key in object)) || !predicate(value)) { return false; } } @@ -2479,7 +2501,7 @@ * @param {Function} func The function to delay. * @param {number} wait The number of milliseconds to delay invocation. * @param {Array} args The arguments to provide to `func`. - * @returns {number} Returns the timer id. + * @returns {number|Object} Returns the timer id or timeout object. */ function baseDelay(func, wait, args) { if (typeof func != 'function') { @@ -2824,12 +2846,7 @@ * @returns {boolean} Returns `true` if `key` exists, else `false`. */ function baseHas(object, key) { - // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`, - // that are composed entirely of index properties, return `false` for - // `hasOwnProperty` checks of them. - return object != null && - (hasOwnProperty.call(object, key) || - (typeof object == 'object' && key in object && getPrototype(object) === null)); + return object != null && hasOwnProperty.call(object, key); } /** @@ -3203,40 +3220,47 @@ } /** - * The base implementation of `_.keys` which doesn't skip the constructor - * property of prototypes or treat sparse arrays as dense. + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. */ - var baseKeys = overArg(nativeKeys, Object); + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } /** - * The base implementation of `_.keysIn` which doesn't skip the constructor - * property of prototypes or treat sparse arrays as dense. + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. */ function baseKeysIn(object) { - object = object == null ? object : Object(object); + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; - var result = []; for (var key in object) { - result.push(key); + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } } return result; } - // Fallback for IE < 9 with es6-shim. - if (enumerate && !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf')) { - baseKeysIn = function(object) { - return iteratorToArray(enumerate(object)); - }; - } - /** * The base implementation of `_.lt` which doesn't coerce arguments. * @@ -3321,7 +3345,7 @@ return; } if (!(isArray(source) || isTypedArray(source))) { - var props = keysIn(source); + var props = baseKeysIn(source); } arrayEach(props || source, function(srcValue, key) { if (props) { @@ -3688,6 +3712,9 @@ * @returns {Object} Returns `object`. */ function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } path = isKey(path, object) ? [path] : castPath(path); var index = -1, @@ -3696,20 +3723,19 @@ nested = object; while (nested != null && ++index < length) { - var key = toKey(path[index]); - if (isObject(nested)) { - var newValue = value; - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = objValue == null - ? (isIndex(path[index + 1]) ? [] : {}) - : objValue; - } + var key = toKey(path[index]), + newValue = value; + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); } - assignValue(nested, key, newValue); } + assignValue(nested, key, newValue); nested = nested[key]; } return object; @@ -4002,7 +4028,7 @@ object = parent(object, path); var key = toKey(last(path)); - return !(object != null && baseHas(object, key)) || delete object[key]; + return !(object != null && hasOwnProperty.call(object, key)) || delete object[key]; } /** @@ -4157,6 +4183,16 @@ return (!start && end >= length) ? array : baseSlice(array, start, end); } + /** + * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). + * + * @private + * @param {number|Object} id The timer id or timeout object of the timer to clear. + */ + var clearTimeout = ctxClearTimeout || function(id) { + return root.clearTimeout(id); + }; + /** * Creates a clone of `buffer`. * @@ -4650,7 +4686,7 @@ function createCtor(Ctor) { return function() { // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist // for more details. var args = arguments; switch (args.length) { @@ -5338,7 +5374,7 @@ case regexpTag: case stringTag: // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring // for more details. return object == (other + ''); @@ -5400,7 +5436,7 @@ var index = objLength; while (index--) { var key = objProps[index]; - if (!(isPartial ? key in other : baseHas(other, key))) { + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { return false; } } @@ -5536,19 +5572,6 @@ return arguments.length ? result(arguments[0], arguments[1]) : result; } - /** - * Gets the "length" property value of `object`. - * - * **Note:** This function is used to avoid a - * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects - * Safari on at least iOS 8.1-8.3 ARM64. - * - * @private - * @param {Object} object The object to query. - * @returns {*} Returns the "length" value. - */ - var getLength = baseProperty('length'); - /** * Gets the data for `map`. * @@ -5597,15 +5620,6 @@ return baseIsNative(value) ? value : undefined; } - /** - * Gets the `[[Prototype]]` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {null|Object} Returns the `[[Prototype]]`. - */ - var getPrototype = overArg(nativeGetPrototype, Object); - /** * Creates an array of the own enumerable symbol properties of `object`. * @@ -5818,23 +5832,6 @@ } } - /** - * Creates an array of index keys for `object` values of arrays, - * `arguments` objects, and strings, otherwise `null` is returned. - * - * @private - * @param {Object} object The object to query. - * @returns {Array|null} Returns index keys, else `null`. - */ - function indexKeys(object) { - var length = object ? object.length : undefined; - if (isLength(length) && - (isArray(object) || isString(object) || isArguments(object))) { - return baseTimes(length, String); - } - return null; - } - /** * Inserts wrapper `details` in a comment at the top of the `source` body. * @@ -6119,6 +6116,25 @@ return objValue; } + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + /** * Gets the parent value at `path` of `object`. * @@ -6187,6 +6203,18 @@ }; }()); + /** + * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @returns {number|Object} Returns the timer id or timeout object. + */ + var setTimeout = ctxSetTimeout || function(func, wait) { + return root.setTimeout(func, wait); + }; + /** * Sets the `toString` method of `wrapper` to mimic the source of `reference` * with wrapper details in a comment at the top of the source body. @@ -6407,7 +6435,7 @@ /** * Creates an array of `array` values not included in the other given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. The order of result values is determined by the * order they occur in the first array. * @@ -6910,7 +6938,7 @@ /** * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. If `fromIndex` is negative, it's used as the * offset from the end of `array`. * @@ -6958,12 +6986,13 @@ * // => [1, 2] */ function initial(array) { - return dropRight(array, 1); + var length = array ? array.length : 0; + return length ? baseSlice(array, 0, -1) : []; } /** * Creates an array of unique values that are included in all given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. The order of result values is determined by the * order they occur in the first array. * @@ -7167,7 +7196,7 @@ /** * Removes all given values from `array` using - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. * * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` @@ -7636,7 +7665,8 @@ * // => [2, 3] */ function tail(array) { - return drop(array, 1); + var length = array ? array.length : 0; + return length ? baseSlice(array, 1, length) : []; } /** @@ -7793,7 +7823,7 @@ /** * Creates an array of unique values, in order, from all given arrays using - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. * * @static @@ -7874,7 +7904,7 @@ /** * Creates a duplicate-free version of an array, using - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons, in which only the first occurrence of each * element is kept. * @@ -8019,7 +8049,7 @@ /** * Creates an array excluding all given values using - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. * * **Note:** Unlike `_.pull`, this method returns a new array. @@ -8590,6 +8620,11 @@ * Iteration is stopped once `predicate` returns falsey. The predicate is * invoked with three arguments: (value, index|key, collection). * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * * @static * @memberOf _ * @since 0.1.0 @@ -8907,7 +8942,7 @@ /** * Checks if `value` is in `collection`. If `collection` is a string, it's * checked for a substring of `value`, otherwise - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * is used for equality comparisons. If `fromIndex` is negative, it's used as * the offset from the end of `collection`. * @@ -9375,7 +9410,7 @@ return collection.size; } } - return keys(collection).length; + return baseKeys(collection).length; } /** @@ -9487,9 +9522,9 @@ * }, _.now()); * // => Logs the number of milliseconds it took for the deferred invocation. */ - function now() { - return Date.now(); - } + var now = ctxNow || function() { + return root.Date.now(); + }; /*------------------------------------------------------------------------*/ @@ -10030,7 +10065,7 @@ * **Note:** The cache is exposed as the `cache` property on the memoized * function. Its creation may be customized by replacing the `_.memoize.Cache` * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object) + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) * method interface of `delete`, `get`, `has`, and `set`. * * @static @@ -10330,7 +10365,7 @@ /** * Creates a function that invokes `func` with the `this` binding of the * create function and an array of arguments much like - * [`Function#apply`](http://www.ecma-international.org/ecma-262/6.0/#sec-function.prototype.apply). + * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). * * **Note:** This method is based on the * [spread operator](https://mdn.io/spread_operator). @@ -10677,7 +10712,7 @@ /** * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * comparison between two values to determine if they are equivalent. * * @static @@ -10857,7 +10892,7 @@ * // => false */ function isArrayLike(value) { - return value != null && isLength(getLength(value)) && !isFunction(value); + return value != null && isLength(value.length) && !isFunction(value); } /** @@ -10957,8 +10992,7 @@ * @since 0.1.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. * @example * * _.isElement(document.body); @@ -11016,12 +11050,14 @@ return !value.size; } } + var isProto = isPrototype(value); for (var key in value) { - if (hasOwnProperty.call(value, key)) { + if (hasOwnProperty.call(value, key) && + !(isProto && key == 'constructor')) { return false; } } - return !(nonEnumShadows && keys(value).length); + return !(nonEnumShadows && nativeKeys(value).length); } /** @@ -11040,8 +11076,7 @@ * @category Lang * @param {*} value The value to compare. * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, - * else `false`. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. * @example * * var object = { 'a': 1 }; @@ -11070,8 +11105,7 @@ * @param {*} value The value to compare. * @param {*} other The other value to compare. * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if the values are equivalent, - * else `false`. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. * @example * * function isGreeting(value) { @@ -11105,8 +11139,7 @@ * @since 3.0.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an error object, - * else `false`. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. * @example * * _.isError(new Error); @@ -11134,8 +11167,7 @@ * @since 0.1.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. * @example * * _.isFinite(3); @@ -11212,16 +11244,15 @@ /** * Checks if `value` is a valid array-like length. * - * **Note:** This function is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. * @example * * _.isLength(3); @@ -11243,7 +11274,7 @@ /** * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types) + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static @@ -11322,8 +11353,12 @@ * Performs a partial deep comparison between `object` and `source` to * determine if `object` contains equivalent property values. * - * **Note:** This method supports comparing the same values as `_.isEqual` - * and is equivalent to `_.matches` when `source` is partially applied. + * **Note:** This method is equivalent to `_.matches` when `source` is + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. * * @static * @memberOf _ @@ -11536,8 +11571,7 @@ * @since 0.8.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. * @example * * function Foo() { @@ -11601,8 +11635,7 @@ * @since 4.0.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a safe integer, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. * @example * * _.isSafeInteger(3); @@ -11896,7 +11929,7 @@ * Converts `value` to an integer. * * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger). + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). * * @static * @memberOf _ @@ -11930,7 +11963,7 @@ * array-like object. * * **Note:** This method is based on - * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). * * @static * @memberOf _ @@ -12159,13 +12192,7 @@ * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } */ var assignIn = createAssigner(function(object, source) { - if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) { - copyObject(source, keysIn(source), object); - return; - } - for (var key in source) { - assignValue(object, key, source[key]); - } + copyObject(source, keysIn(source), object); }); /** @@ -12774,7 +12801,7 @@ * Creates an array of the own enumerable property names of `object`. * * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) * for more details. * * @static @@ -12799,23 +12826,7 @@ * // => ['0', '1'] */ function keys(object) { - var isProto = isPrototype(object); - if (!(isProto || isArrayLike(object))) { - return baseKeys(object); - } - var indexes = indexKeys(object), - skipIndexes = !!indexes, - result = indexes || [], - length = result.length; - - for (var key in object) { - if (baseHas(object, key) && - !(skipIndexes && (key == 'length' || isIndex(key, length))) && - !(isProto && key == 'constructor')) { - result.push(key); - } - } - return result; + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); } /** @@ -12842,23 +12853,7 @@ * // => ['a', 'b', 'c'] (iteration order is not guaranteed) */ function keysIn(object) { - var index = -1, - isProto = isPrototype(object), - props = baseKeysIn(object), - propsLength = props.length, - indexes = indexKeys(object), - skipIndexes = !!indexes, - result = indexes || [], - length = result.length; - - while (++index < propsLength) { - var key = props[index]; - if (!(skipIndexes && (key == 'length' || isIndex(key, length))) && - !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); } /** @@ -15038,8 +15033,12 @@ * object and `source`, returning `true` if the given object has equivalent * property values, else `false`. * - * **Note:** The created function supports comparing the same values as - * `_.isEqual` is equivalent to `_.isMatch` with `source` partially applied. + * **Note:** The created function is equivalent to `_.isMatch` with `source` + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. * * @static * @memberOf _ @@ -15066,7 +15065,9 @@ * value at `path` of a given object to `srcValue`, returning `true` if the * object value is equivalent, else `false`. * - * **Note:** This method supports comparing the same values as `_.isEqual`. + * **Note:** Partial comparisons will match empty array and empty object + * `srcValue` values against any array or object value, respectively. See + * `_.isEqual` for a list of supported value comparisons. * * @static * @memberOf _ diff --git a/package.json b/package.json index f315d2cd24..9ecdd4acdb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lodash", - "version": "4.14.1", + "version": "4.14.2", "license": "MIT", "private": true, "main": "lodash.js", @@ -13,8 +13,7 @@ "doc": "node lib/main/build-doc github && npm run test:doc", "doc:fp": "node lib/fp/build-doc", "doc:site": "node lib/main/build-doc site", - "doc:sitehtml": "optional-dev-dependency marky-markdown@^7.0.2 && npm run doc:site && node lib/main/build-site", - "prepublish": "npm run build", + "doc:sitehtml": "optional-dev-dependency marky-markdown@^8.0.0 && npm run doc:site && node lib/main/build-site", "pretest": "npm run build", "style": "npm run style:main && npm run style:fp && npm run style:perf && npm run style:test", "style:fp": "jscs fp/*.js lib/**/*.js", @@ -34,7 +33,7 @@ "codecov.io": "~0.1.6", "coveralls": "^2.11.12", "curl-amd": "~0.8.12", - "docdown": "~0.6.1", + "docdown": "~0.7.1", "dojo": "^1.11.2", "ecstatic": "^1.4.1", "fs-extra": "~0.30.0", @@ -42,7 +41,8 @@ "istanbul": "0.4.4", "jquery": "^3.1.0", "jscs": "^3.0.7", - "lodash": "4.13.1", + "lodash": "4.14.1", + "lodash-doc-globals": "^0.1.1", "markdown-doctest": "^0.8.1", "optional-dev-dependency": "^1.3.0", "platform": "^1.3.1", diff --git a/test/test-fp.js b/test/test-fp.js index ce1f56f523..f06ac71c37 100644 --- a/test/test-fp.js +++ b/test/test-fp.js @@ -371,7 +371,7 @@ 'method', 'methodOf', 'rest', 'runInContext' ]; - var exceptions = funcMethods.concat('mixin', 'template'), + var exceptions = funcMethods.concat('mixin', 'nthArg', 'template'), expected = _.map(mapping.aryMethod[1], _.constant(true)); var actual = _.map(mapping.aryMethod[1], function(methodName) { @@ -1588,6 +1588,22 @@ /*--------------------------------------------------------------------------*/ + QUnit.module('fp.nthArg'); + + (function() { + QUnit.test('should return a curried function', function(assert) { + assert.expect(2); + + var func = fp.nthArg(1); + assert.strictEqual(func(1)(2), 2); + + func = fp.nthArg(-1); + assert.strictEqual(func(1), 1); + }); + }()); + + /*--------------------------------------------------------------------------*/ + QUnit.module('fp.over'); (function() { @@ -1793,7 +1809,7 @@ assert.deepEqual(rearged('c', 'a', 'b'), ['a', 'b', 'c']); }); - QUnit.test('should curry the rearged function', function(assert) { + QUnit.test('should return a curried function', function(assert) { assert.expect(1); var rearged = fp.rearg([1, 2, 0], fn); diff --git a/test/test.js b/test/test.js index c8eb4542ed..f513714fa3 100644 --- a/test/test.js +++ b/test/test.js @@ -332,7 +332,7 @@ }()); /** Used to detect instrumented istanbul code coverage runs. */ - var coverage = root.__coverage__ || root[lodashStable.findKey(root, function(value, key) { + var coverage = root.__coverage__ || root[lodashStable.find(lodashStable.keys(root), function(key) { return /^(?:\$\$cov_\d+\$\$)$/.test(key); })]; @@ -5785,26 +5785,6 @@ assert.deepEqual(_.filter(array, isEven), [2]); }); - - QUnit.test('should iterate over an object with numeric keys (test in Mobile Safari 8)', function(assert) { - assert.expect(1); - - // Trigger a mobile Safari 8 JIT bug. - // See https://github.com/lodash/lodash/issues/799. - var counter = 0, - object = { '1': 'foo', '8': 'bar', '50': 'baz' }; - - lodashStable.times(1000, function(assert) { - _.filter([], stubTrue); - }); - - _.filter(object, function() { - counter++; - return true; - }); - - assert.strictEqual(counter, 3); - }); }()); /*--------------------------------------------------------------------------*/ @@ -7805,19 +7785,6 @@ } }); - QUnit.test('`_.' + methodName + '` should work for objects with a `[[Prototype]]` of `null`', function(assert) { - assert.expect(1); - - if (create) { - var object = create(null); - object[1] = 'a'; - assert.strictEqual(func(object, 1), true); - } - else { - skipAssert(assert); - } - }); - QUnit.test('`_.' + methodName + '` should check for a key over a path', function(assert) { assert.expect(2); @@ -10970,7 +10937,7 @@ QUnit.test('should detect methods masquerading as native', function(assert) { assert.expect(2); - if (_._baseEach) { + if (!amd && _._baseEach) { var path = require('path'), basePath = path.dirname(filePath), uid = 'e0gvgyrad1jor', @@ -11238,22 +11205,6 @@ skipAssert(assert, 7); } }); - - QUnit.test('should avoid V8 bug #2291 (test in Chrome 19-20)', function(assert) { - assert.expect(1); - - // Trigger a V8 JIT bug. - // See https://code.google.com/p/v8/issues/detail?id=2291. - var object = {}; - - // First, have a comparison statement. - object == object; - - // Then perform the check with `object`. - _.isObject(object); - - assert.strictEqual(_.isObject('a'), false); - }); }(1, 2, 3)); /*--------------------------------------------------------------------------*/ @@ -12978,16 +12929,6 @@ delete numberProto.a; }); - QUnit.test('`_.' + methodName + '` should not coerce nullish values to objects', function(assert) { - assert.expect(2); - - objectProto.a = 1; - lodashStable.each([null, undefined], function(value) { - assert.deepEqual(func(value), []); - }); - delete objectProto.a; - }); - QUnit.test('`_.' + methodName + '` skips the `constructor` property on prototype objects', function(assert) { assert.expect(3); @@ -13004,6 +12945,20 @@ Fake.prototype.constructor = Fake; assert.deepEqual(func(Fake.prototype), ['constructor']); }); + + QUnit.test('`_.' + methodName + '` should return an empty array when `object` is nullish', function(assert) { + var values = [, null, undefined], + expected = lodashStable.map(values, stubArray); + + var actual = lodashStable.map(values, function(value, index) { + objectProto.a = 1; + var result = index ? func(value) : func(); + delete objectProto.a; + return result; + }); + + assert.deepEqual(actual, expected); + }); }); /*--------------------------------------------------------------------------*/ @@ -14081,14 +14036,22 @@ }); }); - QUnit.test('should return `false` if parts of `path` are missing', function(assert) { - assert.expect(4); + QUnit.test('should return `false` when `object` is nullish', function(assert) { + assert.expect(2); - var object = {}; + var values = [, null, undefined], + expected = lodashStable.map(values, stubFalse); - lodashStable.each(['a', 'a[1].b.c', ['a'], ['a', '1', 'b', 'c']], function(path) { + lodashStable.each(['constructor', ['constructor']], function(path) { var matches = _.matchesProperty(path, 1); - assert.strictEqual(matches(object), false); + + var actual = lodashStable.map(values, function(value, index) { + try { + return index ? matches(value) : matches(); + } catch (e) {} + }); + + assert.deepEqual(actual, expected); }); }); @@ -14111,6 +14074,17 @@ }); }); + QUnit.test('should return `false` if parts of `path` are missing', function(assert) { + assert.expect(4); + + var object = {}; + + lodashStable.each(['a', 'a[1].b.c', ['a'], ['a', '1', 'b', 'c']], function(path) { + var matches = _.matchesProperty(path, 1); + assert.strictEqual(matches(object), false); + }); + }); + QUnit.test('should match inherited string keyed `srcValue` properties', function(assert) { assert.expect(2); @@ -14349,25 +14323,6 @@ delete numberProto.b; }); - QUnit.test('should return `false` when `object` is nullish', function(assert) { - assert.expect(2); - - var values = [, null, undefined], - expected = lodashStable.map(values, stubFalse); - - lodashStable.each(['constructor', ['constructor']], function(path) { - var matches = _.matchesProperty(path, 1); - - var actual = lodashStable.map(values, function(value, index) { - try { - return index ? matches(value) : matches(); - } catch (e) {} - }); - - assert.deepEqual(actual, expected); - }); - }); - QUnit.test('should return `true` when comparing a `srcValue` of empty arrays and objects', function(assert) { assert.expect(1); @@ -16261,11 +16216,12 @@ QUnit.test('should return an empty object when `object` is nullish', function(assert) { assert.expect(2); - objectProto.a = 1; lodashStable.each([null, undefined], function(value) { - assert.deepEqual(_.omit(value, 'valueOf'), {}); + objectProto.a = 1; + var actual = _.omit(value, 'valueOf'); + delete objectProto.a; + assert.deepEqual(actual, {}); }); - delete objectProto.a; }); QUnit.test('should work with `arguments` objects as secondary arguments', function(assert) { @@ -19865,41 +19821,15 @@ assert.deepEqual(actual, expected); }); - QUnit.test('`_.' + methodName + '` should follow `path` over non-plain objects', function(assert) { - assert.expect(4); - - var object = { 'a': '' }, - paths = ['constructor.prototype.a', ['constructor', 'prototype', 'a']]; - - lodashStable.each(paths, function(path) { - func(0, path, updater); - assert.strictEqual(0..a, value); - delete numberProto.a; - }); - - lodashStable.each(['a.replace.b', ['a', 'replace', 'b']], function(path) { - func(object, path, updater); - assert.strictEqual(stringProto.replace.b, value); - delete stringProto.replace.b; - }); - }); - - QUnit.test('`_.' + methodName + '` should not error on paths over primitives in strict mode', function(assert) { - 'use strict'; - + QUnit.test('`_.' + methodName + '` should overwrite primitives in the path', function(assert) { assert.expect(2); - lodashStable.each(['a', 'a.a.a'], function(path) { - numberProto.a = oldValue; - try { - func(0, path, updater); - assert.strictEqual(0..a, oldValue); - } catch (e) { - assert.ok(false, e.message); - } - }); + lodashStable.each(['a.b', ['a', 'b']], function(path) { + var object = { 'a': '' }; - delete numberProto.a; + func(object, path, updater); + assert.deepEqual(object, { 'a': { 'b': 2 } }); + });; }); QUnit.test('`_.' + methodName + '` should not create an array for missing non-index property names that start with numbers', function(assert) {