lodash-rails 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/lodash/rails/version.rb +1 -1
- data/vendor/assets/javascripts/lodash.js +623 -446
- data/vendor/assets/javascripts/lodash.min.js +84 -84
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d98a9353d25d7e239779bd5cce33cf9aa1a814cb
|
4
|
+
data.tar.gz: e62b01da2c44a0fc9e521465316d98fdbe16f422
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 400a2f5660123fe99db6f580c7b9f6641f16e7b9aba82fb1fcbb474950edb09f68cb732da88b550ac7a757eea5646ad1f5b6a6bc87f1aee99db9aa8257e0d048
|
7
|
+
data.tar.gz: 79105a9a3a31f0e4ece5866bf85294d935148c5c2d07c0cda96f07ba8054a5c4f37c40c653a10a43bbb2064aaa7d95a9a8358080edfbd5b2ffc213b911c2884d
|
data/README.md
CHANGED
data/lib/lodash/rails/version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/**
|
2
2
|
* @license
|
3
|
-
* lodash 3.
|
3
|
+
* lodash 3.3.0 (Custom Build) <https://lodash.com/>
|
4
4
|
* Build: `lodash modern -o ./lodash.js`
|
5
5
|
* Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
|
6
6
|
* Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
|
@@ -13,7 +13,7 @@
|
|
13
13
|
var undefined;
|
14
14
|
|
15
15
|
/** Used as the semantic version number. */
|
16
|
-
var VERSION = '3.
|
16
|
+
var VERSION = '3.3.0';
|
17
17
|
|
18
18
|
/** Used to compose bitmasks for wrapper metadata. */
|
19
19
|
var BIND_FLAG = 1,
|
@@ -326,6 +326,20 @@
|
|
326
326
|
return -1;
|
327
327
|
}
|
328
328
|
|
329
|
+
/**
|
330
|
+
* The base implementation of `_.isFunction` without support for environments
|
331
|
+
* with incorrect `typeof` results.
|
332
|
+
*
|
333
|
+
* @private
|
334
|
+
* @param {*} value The value to check.
|
335
|
+
* @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
|
336
|
+
*/
|
337
|
+
function baseIsFunction(value) {
|
338
|
+
// Avoid a Chakra JIT bug in compatibility modes of IE 11.
|
339
|
+
// See https://github.com/jashkenas/underscore/issues/1621 for more details.
|
340
|
+
return typeof value == 'function' || false;
|
341
|
+
}
|
342
|
+
|
329
343
|
/**
|
330
344
|
* The base implementation of `_.sortBy` and `_.sortByAll` which uses `comparer`
|
331
345
|
* to define the sort order of `array` and replaces criteria objects with their
|
@@ -850,11 +864,15 @@
|
|
850
864
|
* var wrapped = _([1, 2, 3]);
|
851
865
|
*
|
852
866
|
* // returns an unwrapped value
|
853
|
-
* wrapped.reduce(function(sum, n) {
|
867
|
+
* wrapped.reduce(function(sum, n) {
|
868
|
+
* return sum + n;
|
869
|
+
* });
|
854
870
|
* // => 6
|
855
871
|
*
|
856
872
|
* // returns a wrapped value
|
857
|
-
* var squares = wrapped.map(function(n) {
|
873
|
+
* var squares = wrapped.map(function(n) {
|
874
|
+
* return n * n;
|
875
|
+
* });
|
858
876
|
*
|
859
877
|
* _.isArray(squares);
|
860
878
|
* // => false
|
@@ -874,6 +892,15 @@
|
|
874
892
|
return new LodashWrapper(value);
|
875
893
|
}
|
876
894
|
|
895
|
+
/**
|
896
|
+
* The function whose prototype all chaining wrappers inherit from.
|
897
|
+
*
|
898
|
+
* @private
|
899
|
+
*/
|
900
|
+
function baseLodash() {
|
901
|
+
// No operation performed.
|
902
|
+
}
|
903
|
+
|
877
904
|
/**
|
878
905
|
* The base constructor for creating `lodash` wrapper objects.
|
879
906
|
*
|
@@ -2312,7 +2339,7 @@
|
|
2312
2339
|
|
2313
2340
|
if (isStrictComparable(value)) {
|
2314
2341
|
return function(object) {
|
2315
|
-
return object != null &&
|
2342
|
+
return object != null && object[key] === value && hasOwnProperty.call(object, key);
|
2316
2343
|
};
|
2317
2344
|
}
|
2318
2345
|
}
|
@@ -2362,8 +2389,10 @@
|
|
2362
2389
|
* @returns {Object} Returns the destination object.
|
2363
2390
|
*/
|
2364
2391
|
function baseMerge(object, source, customizer, stackA, stackB) {
|
2392
|
+
if (!isObject(object)) {
|
2393
|
+
return object;
|
2394
|
+
}
|
2365
2395
|
var isSrcArr = isLength(source.length) && (isArray(source) || isTypedArray(source));
|
2366
|
-
|
2367
2396
|
(isSrcArr ? arrayEach : baseForOwn)(source, function(srcValue, key, source) {
|
2368
2397
|
if (isObjectLike(srcValue)) {
|
2369
2398
|
stackA || (stackA = []);
|
@@ -3647,7 +3676,8 @@
|
|
3647
3676
|
} else {
|
3648
3677
|
prereq = type == 'string' && index in object;
|
3649
3678
|
}
|
3650
|
-
|
3679
|
+
var other = object[index];
|
3680
|
+
return prereq && (value === value ? value === other : other !== other);
|
3651
3681
|
}
|
3652
3682
|
|
3653
3683
|
/**
|
@@ -4042,7 +4072,7 @@
|
|
4042
4072
|
* @returns {Array} Returns the new array of filtered values.
|
4043
4073
|
* @example
|
4044
4074
|
*
|
4045
|
-
* _.difference([1, 2, 3], [
|
4075
|
+
* _.difference([1, 2, 3], [4, 2]);
|
4046
4076
|
* // => [1, 3]
|
4047
4077
|
*/
|
4048
4078
|
function difference() {
|
@@ -4134,14 +4164,14 @@
|
|
4134
4164
|
* Elements are dropped until `predicate` returns falsey. The predicate is
|
4135
4165
|
* bound to `thisArg` and invoked with three arguments; (value, index, array).
|
4136
4166
|
*
|
4137
|
-
* If a property name is provided for `predicate` the created
|
4167
|
+
* If a property name is provided for `predicate` the created `_.property`
|
4138
4168
|
* style callback returns the property value of the given element.
|
4139
4169
|
*
|
4140
|
-
* If value is also provided for `thisArg` the created
|
4170
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
4141
4171
|
* style callback returns `true` for elements that have a matching property
|
4142
4172
|
* value, else `false`.
|
4143
4173
|
*
|
4144
|
-
* If an object is provided for `predicate` the created
|
4174
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
4145
4175
|
* callback returns `true` for elements that match the properties of the given
|
4146
4176
|
* object, else `false`.
|
4147
4177
|
*
|
@@ -4150,29 +4180,31 @@
|
|
4150
4180
|
* @category Array
|
4151
4181
|
* @param {Array} array The array to query.
|
4152
4182
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
4153
|
-
* per
|
4183
|
+
* per iteration.
|
4154
4184
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
4155
4185
|
* @returns {Array} Returns the slice of `array`.
|
4156
4186
|
* @example
|
4157
4187
|
*
|
4158
|
-
* _.dropRightWhile([1, 2, 3], function(n) {
|
4188
|
+
* _.dropRightWhile([1, 2, 3], function(n) {
|
4189
|
+
* return n > 1;
|
4190
|
+
* });
|
4159
4191
|
* // => [1]
|
4160
4192
|
*
|
4161
4193
|
* var users = [
|
4162
|
-
* { 'user': 'barney', '
|
4163
|
-
* { 'user': 'fred', '
|
4164
|
-
* { 'user': 'pebbles', '
|
4194
|
+
* { 'user': 'barney', 'active': true },
|
4195
|
+
* { 'user': 'fred', 'active': false },
|
4196
|
+
* { 'user': 'pebbles', 'active': false }
|
4165
4197
|
* ];
|
4166
4198
|
*
|
4167
|
-
* // using the
|
4168
|
-
* _.pluck(_.dropRightWhile(users, { '
|
4199
|
+
* // using the `_.matches` callback shorthand
|
4200
|
+
* _.pluck(_.dropRightWhile(users, { 'user': pebbles, 'active': false }), 'user');
|
4169
4201
|
* // => ['barney', 'fred']
|
4170
4202
|
*
|
4171
|
-
* // using the
|
4203
|
+
* // using the `_.matchesProperty` callback shorthand
|
4172
4204
|
* _.pluck(_.dropRightWhile(users, 'active', false), 'user');
|
4173
4205
|
* // => ['barney']
|
4174
4206
|
*
|
4175
|
-
* // using the
|
4207
|
+
* // using the `_.property` callback shorthand
|
4176
4208
|
* _.pluck(_.dropRightWhile(users, 'active'), 'user');
|
4177
4209
|
* // => ['barney', 'fred', 'pebbles']
|
4178
4210
|
*/
|
@@ -4191,14 +4223,14 @@
|
|
4191
4223
|
* Elements are dropped until `predicate` returns falsey. The predicate is
|
4192
4224
|
* bound to `thisArg` and invoked with three arguments; (value, index, array).
|
4193
4225
|
*
|
4194
|
-
* If a property name is provided for `predicate` the created
|
4226
|
+
* If a property name is provided for `predicate` the created `_.property`
|
4195
4227
|
* style callback returns the property value of the given element.
|
4196
4228
|
*
|
4197
|
-
* If value is also provided for `thisArg` the created
|
4229
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
4198
4230
|
* style callback returns `true` for elements that have a matching property
|
4199
4231
|
* value, else `false`.
|
4200
4232
|
*
|
4201
|
-
* If an object is provided for `predicate` the created
|
4233
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
4202
4234
|
* callback returns `true` for elements that have the properties of the given
|
4203
4235
|
* object, else `false`.
|
4204
4236
|
*
|
@@ -4207,29 +4239,31 @@
|
|
4207
4239
|
* @category Array
|
4208
4240
|
* @param {Array} array The array to query.
|
4209
4241
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
4210
|
-
* per
|
4242
|
+
* per iteration.
|
4211
4243
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
4212
4244
|
* @returns {Array} Returns the slice of `array`.
|
4213
4245
|
* @example
|
4214
4246
|
*
|
4215
|
-
* _.dropWhile([1, 2, 3], function(n) {
|
4247
|
+
* _.dropWhile([1, 2, 3], function(n) {
|
4248
|
+
* return n < 3;
|
4249
|
+
* });
|
4216
4250
|
* // => [3]
|
4217
4251
|
*
|
4218
4252
|
* var users = [
|
4219
|
-
* { 'user': 'barney', '
|
4220
|
-
* { 'user': 'fred', '
|
4221
|
-
* { 'user': 'pebbles', '
|
4253
|
+
* { 'user': 'barney', 'active': false },
|
4254
|
+
* { 'user': 'fred', 'active': false },
|
4255
|
+
* { 'user': 'pebbles', 'active': true }
|
4222
4256
|
* ];
|
4223
4257
|
*
|
4224
|
-
* // using the
|
4225
|
-
* _.pluck(_.dropWhile(users, { '
|
4258
|
+
* // using the `_.matches` callback shorthand
|
4259
|
+
* _.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user');
|
4226
4260
|
* // => ['fred', 'pebbles']
|
4227
4261
|
*
|
4228
|
-
* // using the
|
4262
|
+
* // using the `_.matchesProperty` callback shorthand
|
4229
4263
|
* _.pluck(_.dropWhile(users, 'active', false), 'user');
|
4230
4264
|
* // => ['pebbles']
|
4231
4265
|
*
|
4232
|
-
* // using the
|
4266
|
+
* // using the `_.property` callback shorthand
|
4233
4267
|
* _.pluck(_.dropWhile(users, 'active'), 'user');
|
4234
4268
|
* // => ['barney', 'fred', 'pebbles']
|
4235
4269
|
*/
|
@@ -4275,14 +4309,14 @@
|
|
4275
4309
|
* This method is like `_.find` except that it returns the index of the first
|
4276
4310
|
* element `predicate` returns truthy for, instead of the element itself.
|
4277
4311
|
*
|
4278
|
-
* If a property name is provided for `predicate` the created
|
4312
|
+
* If a property name is provided for `predicate` the created `_.property`
|
4279
4313
|
* style callback returns the property value of the given element.
|
4280
4314
|
*
|
4281
|
-
* If value is also provided for `thisArg` the created
|
4315
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
4282
4316
|
* style callback returns `true` for elements that have a matching property
|
4283
4317
|
* value, else `false`.
|
4284
4318
|
*
|
4285
|
-
* If an object is provided for `predicate` the created
|
4319
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
4286
4320
|
* callback returns `true` for elements that have the properties of the given
|
4287
4321
|
* object, else `false`.
|
4288
4322
|
*
|
@@ -4291,32 +4325,33 @@
|
|
4291
4325
|
* @category Array
|
4292
4326
|
* @param {Array} array The array to search.
|
4293
4327
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
4294
|
-
* per iteration.
|
4295
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
4328
|
+
* per iteration.
|
4296
4329
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
4297
4330
|
* @returns {number} Returns the index of the found element, else `-1`.
|
4298
4331
|
* @example
|
4299
4332
|
*
|
4300
4333
|
* var users = [
|
4301
|
-
* { 'user': 'barney', '
|
4302
|
-
* { 'user': 'fred', '
|
4303
|
-
* { 'user': 'pebbles', '
|
4334
|
+
* { 'user': 'barney', 'active': false },
|
4335
|
+
* { 'user': 'fred', 'active': false },
|
4336
|
+
* { 'user': 'pebbles', 'active': true }
|
4304
4337
|
* ];
|
4305
4338
|
*
|
4306
|
-
* _.findIndex(users, function(chr) {
|
4339
|
+
* _.findIndex(users, function(chr) {
|
4340
|
+
* return chr.user == 'barney';
|
4341
|
+
* });
|
4307
4342
|
* // => 0
|
4308
4343
|
*
|
4309
|
-
* // using the
|
4310
|
-
* _.findIndex(users, { '
|
4344
|
+
* // using the `_.matches` callback shorthand
|
4345
|
+
* _.findIndex(users, { 'user': 'fred', 'active': false });
|
4311
4346
|
* // => 1
|
4312
4347
|
*
|
4313
|
-
* // using the
|
4314
|
-
* _.findIndex(users, '
|
4315
|
-
* // =>
|
4348
|
+
* // using the `_.matchesProperty` callback shorthand
|
4349
|
+
* _.findIndex(users, 'active', false);
|
4350
|
+
* // => 0
|
4316
4351
|
*
|
4317
|
-
* // using the
|
4352
|
+
* // using the `_.property` callback shorthand
|
4318
4353
|
* _.findIndex(users, 'active');
|
4319
|
-
* // =>
|
4354
|
+
* // => 2
|
4320
4355
|
*/
|
4321
4356
|
function findIndex(array, predicate, thisArg) {
|
4322
4357
|
var index = -1,
|
@@ -4335,14 +4370,14 @@
|
|
4335
4370
|
* This method is like `_.findIndex` except that it iterates over elements
|
4336
4371
|
* of `collection` from right to left.
|
4337
4372
|
*
|
4338
|
-
* If a property name is provided for `predicate` the created
|
4373
|
+
* If a property name is provided for `predicate` the created `_.property`
|
4339
4374
|
* style callback returns the property value of the given element.
|
4340
4375
|
*
|
4341
|
-
* If value is also provided for `thisArg` the created
|
4376
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
4342
4377
|
* style callback returns `true` for elements that have a matching property
|
4343
4378
|
* value, else `false`.
|
4344
4379
|
*
|
4345
|
-
* If an object is provided for `predicate` the created
|
4380
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
4346
4381
|
* callback returns `true` for elements that have the properties of the given
|
4347
4382
|
* object, else `false`.
|
4348
4383
|
*
|
@@ -4351,30 +4386,31 @@
|
|
4351
4386
|
* @category Array
|
4352
4387
|
* @param {Array} array The array to search.
|
4353
4388
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
4354
|
-
* per iteration.
|
4355
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
4389
|
+
* per iteration.
|
4356
4390
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
4357
4391
|
* @returns {number} Returns the index of the found element, else `-1`.
|
4358
4392
|
* @example
|
4359
4393
|
*
|
4360
4394
|
* var users = [
|
4361
|
-
* { 'user': 'barney', '
|
4362
|
-
* { 'user': 'fred', '
|
4363
|
-
* { 'user': 'pebbles', '
|
4395
|
+
* { 'user': 'barney', 'active': true },
|
4396
|
+
* { 'user': 'fred', 'active': false },
|
4397
|
+
* { 'user': 'pebbles', 'active': false }
|
4364
4398
|
* ];
|
4365
4399
|
*
|
4366
|
-
* _.findLastIndex(users, function(chr) {
|
4400
|
+
* _.findLastIndex(users, function(chr) {
|
4401
|
+
* return chr.user == 'pebbles';
|
4402
|
+
* });
|
4367
4403
|
* // => 2
|
4368
4404
|
*
|
4369
|
-
* // using the
|
4370
|
-
* _.findLastIndex(users, { '
|
4405
|
+
* // using the `_.matches` callback shorthand
|
4406
|
+
* _.findLastIndex(users, { user': 'barney', 'active': true });
|
4371
4407
|
* // => 0
|
4372
4408
|
*
|
4373
|
-
* // using the
|
4374
|
-
* _.findLastIndex(users, '
|
4409
|
+
* // using the `_.matchesProperty` callback shorthand
|
4410
|
+
* _.findLastIndex(users, 'active', false);
|
4375
4411
|
* // => 1
|
4376
4412
|
*
|
4377
|
-
* // using the
|
4413
|
+
* // using the `_.property` callback shorthand
|
4378
4414
|
* _.findLastIndex(users, 'active');
|
4379
4415
|
* // => 0
|
4380
4416
|
*/
|
@@ -4423,11 +4459,11 @@
|
|
4423
4459
|
* @returns {Array} Returns the new flattened array.
|
4424
4460
|
* @example
|
4425
4461
|
*
|
4426
|
-
* _.flatten([1, [2
|
4427
|
-
* // => [1, 2, 3, [
|
4462
|
+
* _.flatten([1, [2, 3, [4]]]);
|
4463
|
+
* // => [1, 2, 3, [4]];
|
4428
4464
|
*
|
4429
4465
|
* // using `isDeep`
|
4430
|
-
* _.flatten([1, [2
|
4466
|
+
* _.flatten([1, [2, 3, [4]]], true);
|
4431
4467
|
* // => [1, 2, 3, 4];
|
4432
4468
|
*/
|
4433
4469
|
function flatten(array, isDeep, guard) {
|
@@ -4448,7 +4484,7 @@
|
|
4448
4484
|
* @returns {Array} Returns the new flattened array.
|
4449
4485
|
* @example
|
4450
4486
|
*
|
4451
|
-
* _.flattenDeep([1, [2
|
4487
|
+
* _.flattenDeep([1, [2, 3, [4]]]);
|
4452
4488
|
* // => [1, 2, 3, 4];
|
4453
4489
|
*/
|
4454
4490
|
function flattenDeep(array) {
|
@@ -4477,15 +4513,15 @@
|
|
4477
4513
|
* @returns {number} Returns the index of the matched value, else `-1`.
|
4478
4514
|
* @example
|
4479
4515
|
*
|
4480
|
-
* _.indexOf([1, 2,
|
4481
|
-
* // =>
|
4516
|
+
* _.indexOf([1, 2, 1, 2], 2);
|
4517
|
+
* // => 2
|
4482
4518
|
*
|
4483
4519
|
* // using `fromIndex`
|
4484
|
-
* _.indexOf([1, 2,
|
4485
|
-
* // =>
|
4520
|
+
* _.indexOf([1, 2, 1, 2], 2, 2);
|
4521
|
+
* // => 3
|
4486
4522
|
*
|
4487
4523
|
* // performing a binary search
|
4488
|
-
* _.indexOf([
|
4524
|
+
* _.indexOf([1, 1, 2, 2], 2, true);
|
4489
4525
|
* // => 2
|
4490
4526
|
*/
|
4491
4527
|
function indexOf(array, value, fromIndex) {
|
@@ -4536,9 +4572,8 @@
|
|
4536
4572
|
* @param {...Array} [arrays] The arrays to inspect.
|
4537
4573
|
* @returns {Array} Returns the new array of shared values.
|
4538
4574
|
* @example
|
4539
|
-
*
|
4540
|
-
*
|
4541
|
-
* // => [1, 2]
|
4575
|
+
* _.intersection([1, 2], [4, 2], [2, 1]);
|
4576
|
+
* // => [2]
|
4542
4577
|
*/
|
4543
4578
|
function intersection() {
|
4544
4579
|
var args = [],
|
@@ -4614,15 +4649,15 @@
|
|
4614
4649
|
* @returns {number} Returns the index of the matched value, else `-1`.
|
4615
4650
|
* @example
|
4616
4651
|
*
|
4617
|
-
* _.lastIndexOf([1, 2,
|
4618
|
-
* // =>
|
4652
|
+
* _.lastIndexOf([1, 2, 1, 2], 2);
|
4653
|
+
* // => 3
|
4619
4654
|
*
|
4620
4655
|
* // using `fromIndex`
|
4621
|
-
* _.lastIndexOf([1, 2,
|
4656
|
+
* _.lastIndexOf([1, 2, 1, 2], 2, 2);
|
4622
4657
|
* // => 1
|
4623
4658
|
*
|
4624
4659
|
* // performing a binary search
|
4625
|
-
* _.lastIndexOf([
|
4660
|
+
* _.lastIndexOf([1, 1, 2, 2], 2, true);
|
4626
4661
|
* // => 3
|
4627
4662
|
*/
|
4628
4663
|
function lastIndexOf(array, value, fromIndex) {
|
@@ -4668,6 +4703,7 @@
|
|
4668
4703
|
* @example
|
4669
4704
|
*
|
4670
4705
|
* var array = [1, 2, 3, 1, 2, 3];
|
4706
|
+
*
|
4671
4707
|
* _.pull(array, 2, 3);
|
4672
4708
|
* console.log(array);
|
4673
4709
|
* // => [1, 1]
|
@@ -4709,7 +4745,7 @@
|
|
4709
4745
|
* @example
|
4710
4746
|
*
|
4711
4747
|
* var array = [5, 10, 15, 20];
|
4712
|
-
* var evens = _.pullAt(array,
|
4748
|
+
* var evens = _.pullAt(array, 1, 3);
|
4713
4749
|
*
|
4714
4750
|
* console.log(array);
|
4715
4751
|
* // => [5, 15]
|
@@ -4726,14 +4762,14 @@
|
|
4726
4762
|
* and returns an array of the removed elements. The predicate is bound to
|
4727
4763
|
* `thisArg` and invoked with three arguments; (value, index, array).
|
4728
4764
|
*
|
4729
|
-
* If a property name is provided for `predicate` the created
|
4765
|
+
* If a property name is provided for `predicate` the created `_.property`
|
4730
4766
|
* style callback returns the property value of the given element.
|
4731
4767
|
*
|
4732
|
-
* If value is also provided for `thisArg` the created
|
4768
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
4733
4769
|
* style callback returns `true` for elements that have a matching property
|
4734
4770
|
* value, else `false`.
|
4735
4771
|
*
|
4736
|
-
* If an object is provided for `predicate` the created
|
4772
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
4737
4773
|
* callback returns `true` for elements that have the properties of the given
|
4738
4774
|
* object, else `false`.
|
4739
4775
|
*
|
@@ -4744,14 +4780,15 @@
|
|
4744
4780
|
* @category Array
|
4745
4781
|
* @param {Array} array The array to modify.
|
4746
4782
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
4747
|
-
* per iteration.
|
4748
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
4783
|
+
* per iteration.
|
4749
4784
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
4750
4785
|
* @returns {Array} Returns the new array of removed elements.
|
4751
4786
|
* @example
|
4752
4787
|
*
|
4753
4788
|
* var array = [1, 2, 3, 4];
|
4754
|
-
* var evens = _.remove(array, function(n) {
|
4789
|
+
* var evens = _.remove(array, function(n) {
|
4790
|
+
* return n % 2 == 0;
|
4791
|
+
* });
|
4755
4792
|
*
|
4756
4793
|
* console.log(array);
|
4757
4794
|
* // => [1, 3]
|
@@ -4827,14 +4864,14 @@
|
|
4827
4864
|
* to compute their sort ranking. The iteratee is bound to `thisArg` and
|
4828
4865
|
* invoked with one argument; (value).
|
4829
4866
|
*
|
4830
|
-
* If a property name is provided for `predicate` the created
|
4867
|
+
* If a property name is provided for `predicate` the created `_.property`
|
4831
4868
|
* style callback returns the property value of the given element.
|
4832
4869
|
*
|
4833
|
-
* If value is also provided for `thisArg` the created
|
4870
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
4834
4871
|
* style callback returns `true` for elements that have a matching property
|
4835
4872
|
* value, else `false`.
|
4836
4873
|
*
|
4837
|
-
* If an object is provided for `predicate` the created
|
4874
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
4838
4875
|
* callback returns `true` for elements that have the properties of the given
|
4839
4876
|
* object, else `false`.
|
4840
4877
|
*
|
@@ -4844,8 +4881,7 @@
|
|
4844
4881
|
* @param {Array} array The sorted array to inspect.
|
4845
4882
|
* @param {*} value The value to evaluate.
|
4846
4883
|
* @param {Function|Object|string} [iteratee=_.identity] The function invoked
|
4847
|
-
* per iteration.
|
4848
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
4884
|
+
* per iteration.
|
4849
4885
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
4850
4886
|
* @returns {number} Returns the index at which `value` should be inserted
|
4851
4887
|
* into `array`.
|
@@ -4854,7 +4890,7 @@
|
|
4854
4890
|
* _.sortedIndex([30, 50], 40);
|
4855
4891
|
* // => 1
|
4856
4892
|
*
|
4857
|
-
* _.sortedIndex([4, 4, 5, 5
|
4893
|
+
* _.sortedIndex([4, 4, 5, 5], 5);
|
4858
4894
|
* // => 2
|
4859
4895
|
*
|
4860
4896
|
* var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } };
|
@@ -4865,7 +4901,7 @@
|
|
4865
4901
|
* }, dict);
|
4866
4902
|
* // => 1
|
4867
4903
|
*
|
4868
|
-
* // using the
|
4904
|
+
* // using the `_.property` callback shorthand
|
4869
4905
|
* _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x');
|
4870
4906
|
* // => 1
|
4871
4907
|
*/
|
@@ -4887,14 +4923,13 @@
|
|
4887
4923
|
* @param {Array} array The sorted array to inspect.
|
4888
4924
|
* @param {*} value The value to evaluate.
|
4889
4925
|
* @param {Function|Object|string} [iteratee=_.identity] The function invoked
|
4890
|
-
* per iteration.
|
4891
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
4926
|
+
* per iteration.
|
4892
4927
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
4893
4928
|
* @returns {number} Returns the index at which `value` should be inserted
|
4894
4929
|
* into `array`.
|
4895
4930
|
* @example
|
4896
4931
|
*
|
4897
|
-
* _.sortedLastIndex([4, 4, 5, 5
|
4932
|
+
* _.sortedLastIndex([4, 4, 5, 5], 5);
|
4898
4933
|
* // => 4
|
4899
4934
|
*/
|
4900
4935
|
function sortedLastIndex(array, value, iteratee, thisArg) {
|
@@ -4980,14 +5015,14 @@
|
|
4980
5015
|
* taken until `predicate` returns falsey. The predicate is bound to `thisArg`
|
4981
5016
|
* and invoked with three arguments; (value, index, array).
|
4982
5017
|
*
|
4983
|
-
* If a property name is provided for `predicate` the created
|
5018
|
+
* If a property name is provided for `predicate` the created `_.property`
|
4984
5019
|
* style callback returns the property value of the given element.
|
4985
5020
|
*
|
4986
|
-
* If value is also provided for `thisArg` the created
|
5021
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
4987
5022
|
* style callback returns `true` for elements that have a matching property
|
4988
5023
|
* value, else `false`.
|
4989
5024
|
*
|
4990
|
-
* If an object is provided for `predicate` the created
|
5025
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
4991
5026
|
* callback returns `true` for elements that have the properties of the given
|
4992
5027
|
* object, else `false`.
|
4993
5028
|
*
|
@@ -4996,29 +5031,31 @@
|
|
4996
5031
|
* @category Array
|
4997
5032
|
* @param {Array} array The array to query.
|
4998
5033
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
4999
|
-
* per
|
5034
|
+
* per iteration.
|
5000
5035
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
5001
5036
|
* @returns {Array} Returns the slice of `array`.
|
5002
5037
|
* @example
|
5003
5038
|
*
|
5004
|
-
* _.takeRightWhile([1, 2, 3], function(n) {
|
5039
|
+
* _.takeRightWhile([1, 2, 3], function(n) {
|
5040
|
+
* return n > 1;
|
5041
|
+
* });
|
5005
5042
|
* // => [2, 3]
|
5006
5043
|
*
|
5007
5044
|
* var users = [
|
5008
|
-
* { 'user': 'barney', '
|
5009
|
-
* { 'user': 'fred', '
|
5010
|
-
* { 'user': 'pebbles', '
|
5045
|
+
* { 'user': 'barney', 'active': true },
|
5046
|
+
* { 'user': 'fred', 'active': false },
|
5047
|
+
* { 'user': 'pebbles', 'active': false }
|
5011
5048
|
* ];
|
5012
5049
|
*
|
5013
|
-
* // using the
|
5014
|
-
* _.pluck(_.takeRightWhile(users, { '
|
5050
|
+
* // using the `_.matches` callback shorthand
|
5051
|
+
* _.pluck(_.takeRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user');
|
5015
5052
|
* // => ['pebbles']
|
5016
5053
|
*
|
5017
|
-
* // using the
|
5054
|
+
* // using the `_.matchesProperty` callback shorthand
|
5018
5055
|
* _.pluck(_.takeRightWhile(users, 'active', false), 'user');
|
5019
5056
|
* // => ['fred', 'pebbles']
|
5020
5057
|
*
|
5021
|
-
* // using the
|
5058
|
+
* // using the `_.property` callback shorthand
|
5022
5059
|
* _.pluck(_.takeRightWhile(users, 'active'), 'user');
|
5023
5060
|
* // => []
|
5024
5061
|
*/
|
@@ -5037,14 +5074,14 @@
|
|
5037
5074
|
* are taken until `predicate` returns falsey. The predicate is bound to
|
5038
5075
|
* `thisArg` and invoked with three arguments; (value, index, array).
|
5039
5076
|
*
|
5040
|
-
* If a property name is provided for `predicate` the created
|
5077
|
+
* If a property name is provided for `predicate` the created `_.property`
|
5041
5078
|
* style callback returns the property value of the given element.
|
5042
5079
|
*
|
5043
|
-
* If value is also provided for `thisArg` the created
|
5080
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
5044
5081
|
* style callback returns `true` for elements that have a matching property
|
5045
5082
|
* value, else `false`.
|
5046
5083
|
*
|
5047
|
-
* If an object is provided for `predicate` the created
|
5084
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
5048
5085
|
* callback returns `true` for elements that have the properties of the given
|
5049
5086
|
* object, else `false`.
|
5050
5087
|
*
|
@@ -5053,29 +5090,31 @@
|
|
5053
5090
|
* @category Array
|
5054
5091
|
* @param {Array} array The array to query.
|
5055
5092
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
5056
|
-
* per
|
5093
|
+
* per iteration.
|
5057
5094
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
5058
5095
|
* @returns {Array} Returns the slice of `array`.
|
5059
5096
|
* @example
|
5060
5097
|
*
|
5061
|
-
* _.takeWhile([1, 2, 3], function(n) {
|
5098
|
+
* _.takeWhile([1, 2, 3], function(n) {
|
5099
|
+
* return n < 3;
|
5100
|
+
* });
|
5062
5101
|
* // => [1, 2]
|
5063
5102
|
*
|
5064
5103
|
* var users = [
|
5065
|
-
* { 'user': 'barney', '
|
5066
|
-
* { 'user': 'fred', '
|
5067
|
-
* { 'user': 'pebbles', '
|
5104
|
+
* { 'user': 'barney', 'active': false },
|
5105
|
+
* { 'user': 'fred', 'active': false},
|
5106
|
+
* { 'user': 'pebbles', 'active': true }
|
5068
5107
|
* ];
|
5069
5108
|
*
|
5070
|
-
* // using the
|
5071
|
-
* _.pluck(_.takeWhile(users, { '
|
5109
|
+
* // using the `_.matches` callback shorthand
|
5110
|
+
* _.pluck(_.takeWhile(users, { 'user': 'barney', 'active': false }), 'user');
|
5072
5111
|
* // => ['barney']
|
5073
5112
|
*
|
5074
|
-
* // using the
|
5113
|
+
* // using the `_.matchesProperty` callback shorthand
|
5075
5114
|
* _.pluck(_.takeWhile(users, 'active', false), 'user');
|
5076
5115
|
* // => ['barney', 'fred']
|
5077
5116
|
*
|
5078
|
-
* // using the
|
5117
|
+
* // using the `_.property` callback shorthand
|
5079
5118
|
* _.pluck(_.takeWhile(users, 'active'), 'user');
|
5080
5119
|
* // => []
|
5081
5120
|
*/
|
@@ -5106,8 +5145,8 @@
|
|
5106
5145
|
* @returns {Array} Returns the new array of combined values.
|
5107
5146
|
* @example
|
5108
5147
|
*
|
5109
|
-
* _.union([1, 2
|
5110
|
-
* // => [1, 2,
|
5148
|
+
* _.union([1, 2], [4, 2], [2, 1]);
|
5149
|
+
* // => [1, 2, 4]
|
5111
5150
|
*/
|
5112
5151
|
function union() {
|
5113
5152
|
return baseUniq(baseFlatten(arguments, false, true));
|
@@ -5121,14 +5160,14 @@
|
|
5121
5160
|
* uniqueness is computed. The `iteratee` is bound to `thisArg` and invoked
|
5122
5161
|
* with three arguments; (value, index, array).
|
5123
5162
|
*
|
5124
|
-
* If a property name is provided for `predicate` the created
|
5163
|
+
* If a property name is provided for `predicate` the created `_.property`
|
5125
5164
|
* style callback returns the property value of the given element.
|
5126
5165
|
*
|
5127
|
-
* If value is also provided for `thisArg` the created
|
5166
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
5128
5167
|
* style callback returns `true` for elements that have a matching property
|
5129
5168
|
* value, else `false`.
|
5130
5169
|
*
|
5131
|
-
* If an object is provided for `predicate` the created
|
5170
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
5132
5171
|
* callback returns `true` for elements that have the properties of the given
|
5133
5172
|
* object, else `false`.
|
5134
5173
|
*
|
@@ -5144,8 +5183,6 @@
|
|
5144
5183
|
* @param {Array} array The array to inspect.
|
5145
5184
|
* @param {boolean} [isSorted] Specify the array is sorted.
|
5146
5185
|
* @param {Function|Object|string} [iteratee] The function invoked per iteration.
|
5147
|
-
* If a property name or object is provided it is used to create a "_.property"
|
5148
|
-
* or "_.matches" style callback respectively.
|
5149
5186
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
5150
5187
|
* @returns {Array} Returns the new duplicate-value-free array.
|
5151
5188
|
* @example
|
@@ -5158,10 +5195,12 @@
|
|
5158
5195
|
* // => [1, 2]
|
5159
5196
|
*
|
5160
5197
|
* // using an iteratee function
|
5161
|
-
* _.uniq([1, 2.5, 1.5, 2], function(n) {
|
5198
|
+
* _.uniq([1, 2.5, 1.5, 2], function(n) {
|
5199
|
+
* return this.floor(n);
|
5200
|
+
* }, Math);
|
5162
5201
|
* // => [1, 2.5]
|
5163
5202
|
*
|
5164
|
-
* // using the
|
5203
|
+
* // using the `_.property` callback shorthand
|
5165
5204
|
* _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
|
5166
5205
|
* // => [{ 'x': 1 }, { 'x': 2 }]
|
5167
5206
|
*/
|
@@ -5170,8 +5209,7 @@
|
|
5170
5209
|
if (!length) {
|
5171
5210
|
return [];
|
5172
5211
|
}
|
5173
|
-
|
5174
|
-
if (typeof isSorted != 'boolean' && isSorted != null) {
|
5212
|
+
if (isSorted != null && typeof isSorted != 'boolean') {
|
5175
5213
|
thisArg = iteratee;
|
5176
5214
|
iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted;
|
5177
5215
|
isSorted = false;
|
@@ -5231,8 +5269,8 @@
|
|
5231
5269
|
* @returns {Array} Returns the new array of filtered values.
|
5232
5270
|
* @example
|
5233
5271
|
*
|
5234
|
-
* _.without([1, 2, 1,
|
5235
|
-
* // => [
|
5272
|
+
* _.without([1, 2, 1, 3], 1, 2);
|
5273
|
+
* // => [3]
|
5236
5274
|
*/
|
5237
5275
|
function without(array) {
|
5238
5276
|
return baseDifference(array, baseSlice(arguments, 1));
|
@@ -5250,11 +5288,8 @@
|
|
5250
5288
|
* @returns {Array} Returns the new array of values.
|
5251
5289
|
* @example
|
5252
5290
|
*
|
5253
|
-
* _.xor([1, 2
|
5254
|
-
* // => [
|
5255
|
-
*
|
5256
|
-
* _.xor([1, 2, 5], [2, 3, 5], [3, 4, 5]);
|
5257
|
-
* // => [1, 4, 5]
|
5291
|
+
* _.xor([1, 2], [4, 2]);
|
5292
|
+
* // => [1, 4]
|
5258
5293
|
*/
|
5259
5294
|
function xor() {
|
5260
5295
|
var index = -1,
|
@@ -5353,7 +5388,9 @@
|
|
5353
5388
|
*
|
5354
5389
|
* var youngest = _.chain(users)
|
5355
5390
|
* .sortBy('age')
|
5356
|
-
* .map(function(chr) {
|
5391
|
+
* .map(function(chr) {
|
5392
|
+
* return chr.user + ' is ' + chr.age;
|
5393
|
+
* })
|
5357
5394
|
* .first()
|
5358
5395
|
* .value();
|
5359
5396
|
* // => 'pebbles is 1'
|
@@ -5380,7 +5417,9 @@
|
|
5380
5417
|
* @example
|
5381
5418
|
*
|
5382
5419
|
* _([1, 2, 3])
|
5383
|
-
* .tap(function(array) {
|
5420
|
+
* .tap(function(array) {
|
5421
|
+
* array.pop();
|
5422
|
+
* })
|
5384
5423
|
* .reverse()
|
5385
5424
|
* .value();
|
5386
5425
|
* // => [2, 1]
|
@@ -5404,7 +5443,9 @@
|
|
5404
5443
|
*
|
5405
5444
|
* _([1, 2, 3])
|
5406
5445
|
* .last()
|
5407
|
-
* .thru(function(value) {
|
5446
|
+
* .thru(function(value) {
|
5447
|
+
* return [value];
|
5448
|
+
* })
|
5408
5449
|
* .value();
|
5409
5450
|
* // => [3]
|
5410
5451
|
*/
|
@@ -5497,7 +5538,7 @@
|
|
5497
5538
|
var result,
|
5498
5539
|
parent = this;
|
5499
5540
|
|
5500
|
-
while (parent instanceof
|
5541
|
+
while (parent instanceof baseLodash) {
|
5501
5542
|
var clone = wrapperClone(parent);
|
5502
5543
|
if (result) {
|
5503
5544
|
previous.__wrapped__ = clone;
|
@@ -5593,8 +5634,8 @@
|
|
5593
5634
|
* @returns {Array} Returns the new array of picked elements.
|
5594
5635
|
* @example
|
5595
5636
|
*
|
5596
|
-
* _.at(['a', 'b', 'c'
|
5597
|
-
* // => ['a', 'c'
|
5637
|
+
* _.at(['a', 'b', 'c'], [0, 2]);
|
5638
|
+
* // => ['a', 'c']
|
5598
5639
|
*
|
5599
5640
|
* _.at(['fred', 'barney', 'pebbles'], 0, 2);
|
5600
5641
|
* // => ['fred', 'pebbles']
|
@@ -5607,57 +5648,6 @@
|
|
5607
5648
|
return baseAt(collection, baseFlatten(arguments, false, false, 1));
|
5608
5649
|
}
|
5609
5650
|
|
5610
|
-
/**
|
5611
|
-
* Checks if `value` is in `collection` using `SameValueZero` for equality
|
5612
|
-
* comparisons. If `fromIndex` is negative, it is used as the offset from
|
5613
|
-
* the end of `collection`.
|
5614
|
-
*
|
5615
|
-
* **Note:** `SameValueZero` comparisons are like strict equality comparisons,
|
5616
|
-
* e.g. `===`, except that `NaN` matches `NaN`. See the
|
5617
|
-
* [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
|
5618
|
-
* for more details.
|
5619
|
-
*
|
5620
|
-
* @static
|
5621
|
-
* @memberOf _
|
5622
|
-
* @alias contains, include
|
5623
|
-
* @category Collection
|
5624
|
-
* @param {Array|Object|string} collection The collection to search.
|
5625
|
-
* @param {*} target The value to search for.
|
5626
|
-
* @param {number} [fromIndex=0] The index to search from.
|
5627
|
-
* @returns {boolean} Returns `true` if a matching element is found, else `false`.
|
5628
|
-
* @example
|
5629
|
-
*
|
5630
|
-
* _.includes([1, 2, 3], 1);
|
5631
|
-
* // => true
|
5632
|
-
*
|
5633
|
-
* _.includes([1, 2, 3], 1, 2);
|
5634
|
-
* // => false
|
5635
|
-
*
|
5636
|
-
* _.includes({ 'user': 'fred', 'age': 40 }, 'fred');
|
5637
|
-
* // => true
|
5638
|
-
*
|
5639
|
-
* _.includes('pebbles', 'eb');
|
5640
|
-
* // => true
|
5641
|
-
*/
|
5642
|
-
function includes(collection, target, fromIndex) {
|
5643
|
-
var length = collection ? collection.length : 0;
|
5644
|
-
if (!isLength(length)) {
|
5645
|
-
collection = values(collection);
|
5646
|
-
length = collection.length;
|
5647
|
-
}
|
5648
|
-
if (!length) {
|
5649
|
-
return false;
|
5650
|
-
}
|
5651
|
-
if (typeof fromIndex == 'number') {
|
5652
|
-
fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);
|
5653
|
-
} else {
|
5654
|
-
fromIndex = 0;
|
5655
|
-
}
|
5656
|
-
return (typeof collection == 'string' || !isArray(collection) && isString(collection))
|
5657
|
-
? (fromIndex < length && collection.indexOf(target, fromIndex) > -1)
|
5658
|
-
: (getIndexOf(collection, target, fromIndex) > -1);
|
5659
|
-
}
|
5660
|
-
|
5661
5651
|
/**
|
5662
5652
|
* Creates an object composed of keys generated from the results of running
|
5663
5653
|
* each element of `collection` through `iteratee`. The corresponding value
|
@@ -5665,14 +5655,14 @@
|
|
5665
5655
|
* The `iteratee` is bound to `thisArg` and invoked with three arguments;
|
5666
5656
|
* (value, index|key, collection).
|
5667
5657
|
*
|
5668
|
-
* If a property name is provided for `predicate` the created
|
5658
|
+
* If a property name is provided for `predicate` the created `_.property`
|
5669
5659
|
* style callback returns the property value of the given element.
|
5670
5660
|
*
|
5671
|
-
* If value is also provided for `thisArg` the created
|
5661
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
5672
5662
|
* style callback returns `true` for elements that have a matching property
|
5673
5663
|
* value, else `false`.
|
5674
5664
|
*
|
5675
|
-
* If an object is provided for `predicate` the created
|
5665
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
5676
5666
|
* callback returns `true` for elements that have the properties of the given
|
5677
5667
|
* object, else `false`.
|
5678
5668
|
*
|
@@ -5681,16 +5671,19 @@
|
|
5681
5671
|
* @category Collection
|
5682
5672
|
* @param {Array|Object|string} collection The collection to iterate over.
|
5683
5673
|
* @param {Function|Object|string} [iteratee=_.identity] The function invoked
|
5684
|
-
* per iteration.
|
5685
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
5674
|
+
* per iteration.
|
5686
5675
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
5687
5676
|
* @returns {Object} Returns the composed aggregate object.
|
5688
5677
|
* @example
|
5689
5678
|
*
|
5690
|
-
* _.countBy([4.3, 6.1, 6.4], function(n) {
|
5679
|
+
* _.countBy([4.3, 6.1, 6.4], function(n) {
|
5680
|
+
* return Math.floor(n);
|
5681
|
+
* });
|
5691
5682
|
* // => { '4': 1, '6': 2 }
|
5692
5683
|
*
|
5693
|
-
* _.countBy([4.3, 6.1, 6.4], function(n) {
|
5684
|
+
* _.countBy([4.3, 6.1, 6.4], function(n) {
|
5685
|
+
* return this.floor(n);
|
5686
|
+
* }, Math);
|
5694
5687
|
* // => { '4': 1, '6': 2 }
|
5695
5688
|
*
|
5696
5689
|
* _.countBy(['one', 'two', 'three'], 'length');
|
@@ -5705,14 +5698,14 @@
|
|
5705
5698
|
* The predicate is bound to `thisArg` and invoked with three arguments;
|
5706
5699
|
* (value, index|key, collection).
|
5707
5700
|
*
|
5708
|
-
* If a property name is provided for `predicate` the created
|
5701
|
+
* If a property name is provided for `predicate` the created `_.property`
|
5709
5702
|
* style callback returns the property value of the given element.
|
5710
5703
|
*
|
5711
|
-
* If value is also provided for `thisArg` the created
|
5704
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
5712
5705
|
* style callback returns `true` for elements that have a matching property
|
5713
5706
|
* value, else `false`.
|
5714
5707
|
*
|
5715
|
-
* If an object is provided for `predicate` the created
|
5708
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
5716
5709
|
* callback returns `true` for elements that have the properties of the given
|
5717
5710
|
* object, else `false`.
|
5718
5711
|
*
|
@@ -5722,30 +5715,29 @@
|
|
5722
5715
|
* @category Collection
|
5723
5716
|
* @param {Array|Object|string} collection The collection to iterate over.
|
5724
5717
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
5725
|
-
* per iteration.
|
5726
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
5718
|
+
* per iteration.
|
5727
5719
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
5728
5720
|
* @returns {boolean} Returns `true` if all elements pass the predicate check,
|
5729
5721
|
* else `false`.
|
5730
5722
|
* @example
|
5731
5723
|
*
|
5732
|
-
* _.every([true, 1, null, 'yes']);
|
5724
|
+
* _.every([true, 1, null, 'yes'], Boolean);
|
5733
5725
|
* // => false
|
5734
5726
|
*
|
5735
5727
|
* var users = [
|
5736
|
-
* { 'user': 'barney', '
|
5737
|
-
* { 'user': 'fred', '
|
5728
|
+
* { 'user': 'barney', 'active': false },
|
5729
|
+
* { 'user': 'fred', 'active': false }
|
5738
5730
|
* ];
|
5739
5731
|
*
|
5740
|
-
* // using the
|
5741
|
-
* _.every(users, { '
|
5732
|
+
* // using the `_.matches` callback shorthand
|
5733
|
+
* _.every(users, { 'user': 'barney', 'active': false });
|
5742
5734
|
* // => false
|
5743
5735
|
*
|
5744
|
-
* // using the
|
5736
|
+
* // using the `_.matchesProperty` callback shorthand
|
5745
5737
|
* _.every(users, 'active', false);
|
5746
5738
|
* // => true
|
5747
5739
|
*
|
5748
|
-
* // using the
|
5740
|
+
* // using the `_.property` callback shorthand
|
5749
5741
|
* _.every(users, 'active');
|
5750
5742
|
* // => false
|
5751
5743
|
*/
|
@@ -5762,14 +5754,14 @@
|
|
5762
5754
|
* `predicate` returns truthy for. The predicate is bound to `thisArg` and
|
5763
5755
|
* invoked with three arguments; (value, index|key, collection).
|
5764
5756
|
*
|
5765
|
-
* If a property name is provided for `predicate` the created
|
5757
|
+
* If a property name is provided for `predicate` the created `_.property`
|
5766
5758
|
* style callback returns the property value of the given element.
|
5767
5759
|
*
|
5768
|
-
* If value is also provided for `thisArg` the created
|
5760
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
5769
5761
|
* style callback returns `true` for elements that have a matching property
|
5770
5762
|
* value, else `false`.
|
5771
5763
|
*
|
5772
|
-
* If an object is provided for `predicate` the created
|
5764
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
5773
5765
|
* callback returns `true` for elements that have the properties of the given
|
5774
5766
|
* object, else `false`.
|
5775
5767
|
*
|
@@ -5779,29 +5771,30 @@
|
|
5779
5771
|
* @category Collection
|
5780
5772
|
* @param {Array|Object|string} collection The collection to iterate over.
|
5781
5773
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
5782
|
-
* per iteration.
|
5783
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
5774
|
+
* per iteration.
|
5784
5775
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
5785
5776
|
* @returns {Array} Returns the new filtered array.
|
5786
5777
|
* @example
|
5787
5778
|
*
|
5788
|
-
*
|
5789
|
-
*
|
5779
|
+
* _.filter([4, 5, 6], function(n) {
|
5780
|
+
* return n % 2 == 0;
|
5781
|
+
* });
|
5782
|
+
* // => [4, 6]
|
5790
5783
|
*
|
5791
5784
|
* var users = [
|
5792
5785
|
* { 'user': 'barney', 'age': 36, 'active': true },
|
5793
5786
|
* { 'user': 'fred', 'age': 40, 'active': false }
|
5794
5787
|
* ];
|
5795
5788
|
*
|
5796
|
-
* // using the
|
5789
|
+
* // using the `_.matches` callback shorthand
|
5797
5790
|
* _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');
|
5798
5791
|
* // => ['barney']
|
5799
5792
|
*
|
5800
|
-
* // using the
|
5793
|
+
* // using the `_.matchesProperty` callback shorthand
|
5801
5794
|
* _.pluck(_.filter(users, 'active', false), 'user');
|
5802
5795
|
* // => ['fred']
|
5803
5796
|
*
|
5804
|
-
* // using the
|
5797
|
+
* // using the `_.property` callback shorthand
|
5805
5798
|
* _.pluck(_.filter(users, 'active'), 'user');
|
5806
5799
|
* // => ['barney']
|
5807
5800
|
*/
|
@@ -5816,14 +5809,14 @@
|
|
5816
5809
|
* `predicate` returns truthy for. The predicate is bound to `thisArg` and
|
5817
5810
|
* invoked with three arguments; (value, index|key, collection).
|
5818
5811
|
*
|
5819
|
-
* If a property name is provided for `predicate` the created
|
5812
|
+
* If a property name is provided for `predicate` the created `_.property`
|
5820
5813
|
* style callback returns the property value of the given element.
|
5821
5814
|
*
|
5822
|
-
* If value is also provided for `thisArg` the created
|
5815
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
5823
5816
|
* style callback returns `true` for elements that have a matching property
|
5824
5817
|
* value, else `false`.
|
5825
5818
|
*
|
5826
|
-
* If an object is provided for `predicate` the created
|
5819
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
5827
5820
|
* callback returns `true` for elements that have the properties of the given
|
5828
5821
|
* object, else `false`.
|
5829
5822
|
*
|
@@ -5833,8 +5826,7 @@
|
|
5833
5826
|
* @category Collection
|
5834
5827
|
* @param {Array|Object|string} collection The collection to search.
|
5835
5828
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
5836
|
-
* per iteration.
|
5837
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
5829
|
+
* per iteration.
|
5838
5830
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
5839
5831
|
* @returns {*} Returns the matched element, else `undefined`.
|
5840
5832
|
* @example
|
@@ -5845,18 +5837,20 @@
|
|
5845
5837
|
* { 'user': 'pebbles', 'age': 1, 'active': true }
|
5846
5838
|
* ];
|
5847
5839
|
*
|
5848
|
-
* _.result(_.find(users, function(chr) {
|
5840
|
+
* _.result(_.find(users, function(chr) {
|
5841
|
+
* return chr.age < 40;
|
5842
|
+
* }), 'user');
|
5849
5843
|
* // => 'barney'
|
5850
5844
|
*
|
5851
|
-
* // using the
|
5845
|
+
* // using the `_.matches` callback shorthand
|
5852
5846
|
* _.result(_.find(users, { 'age': 1, 'active': true }), 'user');
|
5853
5847
|
* // => 'pebbles'
|
5854
5848
|
*
|
5855
|
-
* // using the
|
5849
|
+
* // using the `_.matchesProperty` callback shorthand
|
5856
5850
|
* _.result(_.find(users, 'active', false), 'user');
|
5857
5851
|
* // => 'fred'
|
5858
5852
|
*
|
5859
|
-
* // using the
|
5853
|
+
* // using the `_.property` callback shorthand
|
5860
5854
|
* _.result(_.find(users, 'active'), 'user');
|
5861
5855
|
* // => 'barney'
|
5862
5856
|
*/
|
@@ -5878,13 +5872,14 @@
|
|
5878
5872
|
* @category Collection
|
5879
5873
|
* @param {Array|Object|string} collection The collection to search.
|
5880
5874
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
5881
|
-
* per iteration.
|
5882
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
5875
|
+
* per iteration.
|
5883
5876
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
5884
5877
|
* @returns {*} Returns the matched element, else `undefined`.
|
5885
5878
|
* @example
|
5886
5879
|
*
|
5887
|
-
* _.findLast([1, 2, 3, 4], function(n) {
|
5880
|
+
* _.findLast([1, 2, 3, 4], function(n) {
|
5881
|
+
* return n % 2 == 1;
|
5882
|
+
* });
|
5888
5883
|
* // => 3
|
5889
5884
|
*/
|
5890
5885
|
function findLast(collection, predicate, thisArg) {
|
@@ -5945,10 +5940,14 @@
|
|
5945
5940
|
* @returns {Array|Object|string} Returns `collection`.
|
5946
5941
|
* @example
|
5947
5942
|
*
|
5948
|
-
* _([1, 2
|
5943
|
+
* _([1, 2]).forEach(function(n) {
|
5944
|
+
* console.log(n);
|
5945
|
+
* }).value();
|
5949
5946
|
* // => logs each value from left to right and returns the array
|
5950
5947
|
*
|
5951
|
-
* _.forEach({ '
|
5948
|
+
* _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
|
5949
|
+
* console.log(n, key);
|
5950
|
+
* });
|
5952
5951
|
* // => logs each value-key pair and returns the object (iteration order is not guaranteed)
|
5953
5952
|
*/
|
5954
5953
|
function forEach(collection, iteratee, thisArg) {
|
@@ -5971,7 +5970,9 @@
|
|
5971
5970
|
* @returns {Array|Object|string} Returns `collection`.
|
5972
5971
|
* @example
|
5973
5972
|
*
|
5974
|
-
* _([1, 2
|
5973
|
+
* _([1, 2]).forEachRight(function(n) {
|
5974
|
+
* console.log(n);
|
5975
|
+
* }).join(',');
|
5975
5976
|
* // => logs each value from right to left and returns the array
|
5976
5977
|
*/
|
5977
5978
|
function forEachRight(collection, iteratee, thisArg) {
|
@@ -5987,14 +5988,14 @@
|
|
5987
5988
|
* The `iteratee` is bound to `thisArg` and invoked with three arguments;
|
5988
5989
|
* (value, index|key, collection).
|
5989
5990
|
*
|
5990
|
-
* If a property name is provided for `predicate` the created
|
5991
|
+
* If a property name is provided for `predicate` the created `_.property`
|
5991
5992
|
* style callback returns the property value of the given element.
|
5992
5993
|
*
|
5993
|
-
* If value is also provided for `thisArg` the created
|
5994
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
5994
5995
|
* style callback returns `true` for elements that have a matching property
|
5995
5996
|
* value, else `false`.
|
5996
5997
|
*
|
5997
|
-
* If an object is provided for `predicate` the created
|
5998
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
5998
5999
|
* callback returns `true` for elements that have the properties of the given
|
5999
6000
|
* object, else `false`.
|
6000
6001
|
*
|
@@ -6003,19 +6004,22 @@
|
|
6003
6004
|
* @category Collection
|
6004
6005
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6005
6006
|
* @param {Function|Object|string} [iteratee=_.identity] The function invoked
|
6006
|
-
* per iteration.
|
6007
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
6007
|
+
* per iteration.
|
6008
6008
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
6009
6009
|
* @returns {Object} Returns the composed aggregate object.
|
6010
6010
|
* @example
|
6011
6011
|
*
|
6012
|
-
* _.groupBy([4.2, 6.1, 6.4], function(n) {
|
6012
|
+
* _.groupBy([4.2, 6.1, 6.4], function(n) {
|
6013
|
+
* return Math.floor(n);
|
6014
|
+
* });
|
6013
6015
|
* // => { '4': [4.2], '6': [6.1, 6.4] }
|
6014
6016
|
*
|
6015
|
-
* _.groupBy([4.2, 6.1, 6.4], function(n) {
|
6017
|
+
* _.groupBy([4.2, 6.1, 6.4], function(n) {
|
6018
|
+
* return this.floor(n);
|
6019
|
+
* }, Math);
|
6016
6020
|
* // => { '4': [4.2], '6': [6.1, 6.4] }
|
6017
6021
|
*
|
6018
|
-
* // using the
|
6022
|
+
* // using the `_.property` callback shorthand
|
6019
6023
|
* _.groupBy(['one', 'two', 'three'], 'length');
|
6020
6024
|
* // => { '3': ['one', 'two'], '5': ['three'] }
|
6021
6025
|
*/
|
@@ -6027,6 +6031,57 @@
|
|
6027
6031
|
}
|
6028
6032
|
});
|
6029
6033
|
|
6034
|
+
/**
|
6035
|
+
* Checks if `value` is in `collection` using `SameValueZero` for equality
|
6036
|
+
* comparisons. If `fromIndex` is negative, it is used as the offset from
|
6037
|
+
* the end of `collection`.
|
6038
|
+
*
|
6039
|
+
* **Note:** `SameValueZero` comparisons are like strict equality comparisons,
|
6040
|
+
* e.g. `===`, except that `NaN` matches `NaN`. See the
|
6041
|
+
* [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
|
6042
|
+
* for more details.
|
6043
|
+
*
|
6044
|
+
* @static
|
6045
|
+
* @memberOf _
|
6046
|
+
* @alias contains, include
|
6047
|
+
* @category Collection
|
6048
|
+
* @param {Array|Object|string} collection The collection to search.
|
6049
|
+
* @param {*} target The value to search for.
|
6050
|
+
* @param {number} [fromIndex=0] The index to search from.
|
6051
|
+
* @returns {boolean} Returns `true` if a matching element is found, else `false`.
|
6052
|
+
* @example
|
6053
|
+
*
|
6054
|
+
* _.includes([1, 2, 3], 1);
|
6055
|
+
* // => true
|
6056
|
+
*
|
6057
|
+
* _.includes([1, 2, 3], 1, 2);
|
6058
|
+
* // => false
|
6059
|
+
*
|
6060
|
+
* _.includes({ 'user': 'fred', 'age': 40 }, 'fred');
|
6061
|
+
* // => true
|
6062
|
+
*
|
6063
|
+
* _.includes('pebbles', 'eb');
|
6064
|
+
* // => true
|
6065
|
+
*/
|
6066
|
+
function includes(collection, target, fromIndex) {
|
6067
|
+
var length = collection ? collection.length : 0;
|
6068
|
+
if (!isLength(length)) {
|
6069
|
+
collection = values(collection);
|
6070
|
+
length = collection.length;
|
6071
|
+
}
|
6072
|
+
if (!length) {
|
6073
|
+
return false;
|
6074
|
+
}
|
6075
|
+
if (typeof fromIndex == 'number') {
|
6076
|
+
fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);
|
6077
|
+
} else {
|
6078
|
+
fromIndex = 0;
|
6079
|
+
}
|
6080
|
+
return (typeof collection == 'string' || !isArray(collection) && isString(collection))
|
6081
|
+
? (fromIndex < length && collection.indexOf(target, fromIndex) > -1)
|
6082
|
+
: (getIndexOf(collection, target, fromIndex) > -1);
|
6083
|
+
}
|
6084
|
+
|
6030
6085
|
/**
|
6031
6086
|
* Creates an object composed of keys generated from the results of running
|
6032
6087
|
* each element of `collection` through `iteratee`. The corresponding value
|
@@ -6034,14 +6089,14 @@
|
|
6034
6089
|
* iteratee function is bound to `thisArg` and invoked with three arguments;
|
6035
6090
|
* (value, index|key, collection).
|
6036
6091
|
*
|
6037
|
-
* If a property name is provided for `predicate` the created
|
6092
|
+
* If a property name is provided for `predicate` the created `_.property`
|
6038
6093
|
* style callback returns the property value of the given element.
|
6039
6094
|
*
|
6040
|
-
* If value is also provided for `thisArg` the created
|
6095
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
6041
6096
|
* style callback returns `true` for elements that have a matching property
|
6042
6097
|
* value, else `false`.
|
6043
6098
|
*
|
6044
|
-
* If an object is provided for `predicate` the created
|
6099
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
6045
6100
|
* callback returns `true` for elements that have the properties of the given
|
6046
6101
|
* object, else `false`.
|
6047
6102
|
*
|
@@ -6050,8 +6105,7 @@
|
|
6050
6105
|
* @category Collection
|
6051
6106
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6052
6107
|
* @param {Function|Object|string} [iteratee=_.identity] The function invoked
|
6053
|
-
* per iteration.
|
6054
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
6108
|
+
* per iteration.
|
6055
6109
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
6056
6110
|
* @returns {Object} Returns the composed aggregate object.
|
6057
6111
|
* @example
|
@@ -6064,10 +6118,14 @@
|
|
6064
6118
|
* _.indexBy(keyData, 'dir');
|
6065
6119
|
* // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
|
6066
6120
|
*
|
6067
|
-
* _.indexBy(keyData, function(object) {
|
6121
|
+
* _.indexBy(keyData, function(object) {
|
6122
|
+
* return String.fromCharCode(object.code);
|
6123
|
+
* });
|
6068
6124
|
* // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
|
6069
6125
|
*
|
6070
|
-
* _.indexBy(keyData, function(object) {
|
6126
|
+
* _.indexBy(keyData, function(object) {
|
6127
|
+
* return this.fromCharCode(object.code);
|
6128
|
+
* }, String);
|
6071
6129
|
* // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
|
6072
6130
|
*/
|
6073
6131
|
var indexBy = createAggregator(function(result, value, key) {
|
@@ -6105,14 +6163,14 @@
|
|
6105
6163
|
* `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
|
6106
6164
|
* arguments; (value, index|key, collection).
|
6107
6165
|
*
|
6108
|
-
* If a property name is provided for `predicate` the created
|
6166
|
+
* If a property name is provided for `predicate` the created `_.property`
|
6109
6167
|
* style callback returns the property value of the given element.
|
6110
6168
|
*
|
6111
|
-
* If value is also provided for `thisArg` the created
|
6169
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
6112
6170
|
* style callback returns `true` for elements that have a matching property
|
6113
6171
|
* value, else `false`.
|
6114
6172
|
*
|
6115
|
-
* If an object is provided for `predicate` the created
|
6173
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
6116
6174
|
* callback returns `true` for elements that have the properties of the given
|
6117
6175
|
* object, else `false`.
|
6118
6176
|
*
|
@@ -6131,24 +6189,28 @@
|
|
6131
6189
|
* @category Collection
|
6132
6190
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6133
6191
|
* @param {Function|Object|string} [iteratee=_.identity] The function invoked
|
6134
|
-
* per iteration.
|
6135
|
-
* create a
|
6192
|
+
* per iteration.
|
6193
|
+
* create a `_.property` or `_.matches` style callback respectively.
|
6136
6194
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
6137
6195
|
* @returns {Array} Returns the new mapped array.
|
6138
6196
|
* @example
|
6139
6197
|
*
|
6140
|
-
*
|
6141
|
-
*
|
6198
|
+
* function timesThree(n) {
|
6199
|
+
* return n * 3;
|
6200
|
+
* }
|
6142
6201
|
*
|
6143
|
-
* _.map(
|
6144
|
-
* // => [3, 6
|
6202
|
+
* _.map([1, 2], timesThree);
|
6203
|
+
* // => [3, 6]
|
6204
|
+
*
|
6205
|
+
* _.map({ 'a': 1, 'b': 2 }, timesThree);
|
6206
|
+
* // => [3, 6] (iteration order is not guaranteed)
|
6145
6207
|
*
|
6146
6208
|
* var users = [
|
6147
6209
|
* { 'user': 'barney' },
|
6148
6210
|
* { 'user': 'fred' }
|
6149
6211
|
* ];
|
6150
6212
|
*
|
6151
|
-
* // using the
|
6213
|
+
* // using the `_.property` callback shorthand
|
6152
6214
|
* _.map(users, 'user');
|
6153
6215
|
* // => ['barney', 'fred']
|
6154
6216
|
*/
|
@@ -6165,14 +6227,14 @@
|
|
6165
6227
|
* is ranked. The `iteratee` is bound to `thisArg` and invoked with three
|
6166
6228
|
* arguments; (value, index, collection).
|
6167
6229
|
*
|
6168
|
-
* If a property name is provided for `predicate` the created
|
6230
|
+
* If a property name is provided for `predicate` the created `_.property`
|
6169
6231
|
* style callback returns the property value of the given element.
|
6170
6232
|
*
|
6171
|
-
* If value is also provided for `thisArg` the created
|
6233
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
6172
6234
|
* style callback returns `true` for elements that have a matching property
|
6173
6235
|
* value, else `false`.
|
6174
6236
|
*
|
6175
|
-
* If an object is provided for `predicate` the created
|
6237
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
6176
6238
|
* callback returns `true` for elements that have the properties of the given
|
6177
6239
|
* object, else `false`.
|
6178
6240
|
*
|
@@ -6181,8 +6243,6 @@
|
|
6181
6243
|
* @category Collection
|
6182
6244
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6183
6245
|
* @param {Function|Object|string} [iteratee] The function invoked per iteration.
|
6184
|
-
* If a property name or object is provided it is used to create a "_.property"
|
6185
|
-
* or "_.matches" style callback respectively.
|
6186
6246
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
6187
6247
|
* @returns {*} Returns the maximum value.
|
6188
6248
|
* @example
|
@@ -6198,10 +6258,12 @@
|
|
6198
6258
|
* { 'user': 'fred', 'age': 40 }
|
6199
6259
|
* ];
|
6200
6260
|
*
|
6201
|
-
* _.max(users, function(chr) {
|
6261
|
+
* _.max(users, function(chr) {
|
6262
|
+
* return chr.age;
|
6263
|
+
* });
|
6202
6264
|
* // => { 'user': 'fred', 'age': 40 };
|
6203
6265
|
*
|
6204
|
-
* // using the
|
6266
|
+
* // using the `_.property` callback shorthand
|
6205
6267
|
* _.max(users, 'age');
|
6206
6268
|
* // => { 'user': 'fred', 'age': 40 };
|
6207
6269
|
*/
|
@@ -6214,14 +6276,14 @@
|
|
6214
6276
|
* is ranked. The `iteratee` is bound to `thisArg` and invoked with three
|
6215
6277
|
* arguments; (value, index, collection).
|
6216
6278
|
*
|
6217
|
-
* If a property name is provided for `predicate` the created
|
6279
|
+
* If a property name is provided for `predicate` the created `_.property`
|
6218
6280
|
* style callback returns the property value of the given element.
|
6219
6281
|
*
|
6220
|
-
* If value is also provided for `thisArg` the created
|
6282
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
6221
6283
|
* style callback returns `true` for elements that have a matching property
|
6222
6284
|
* value, else `false`.
|
6223
6285
|
*
|
6224
|
-
* If an object is provided for `predicate` the created
|
6286
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
6225
6287
|
* callback returns `true` for elements that have the properties of the given
|
6226
6288
|
* object, else `false`.
|
6227
6289
|
*
|
@@ -6230,8 +6292,6 @@
|
|
6230
6292
|
* @category Collection
|
6231
6293
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6232
6294
|
* @param {Function|Object|string} [iteratee] The function invoked per iteration.
|
6233
|
-
* If a property name or object is provided it is used to create a "_.property"
|
6234
|
-
* or "_.matches" style callback respectively.
|
6235
6295
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
6236
6296
|
* @returns {*} Returns the minimum value.
|
6237
6297
|
* @example
|
@@ -6247,10 +6307,12 @@
|
|
6247
6307
|
* { 'user': 'fred', 'age': 40 }
|
6248
6308
|
* ];
|
6249
6309
|
*
|
6250
|
-
* _.min(users, function(chr) {
|
6310
|
+
* _.min(users, function(chr) {
|
6311
|
+
* return chr.age;
|
6312
|
+
* });
|
6251
6313
|
* // => { 'user': 'barney', 'age': 36 };
|
6252
6314
|
*
|
6253
|
-
* // using the
|
6315
|
+
* // using the `_.property` callback shorthand
|
6254
6316
|
* _.min(users, 'age');
|
6255
6317
|
* // => { 'user': 'barney', 'age': 36 };
|
6256
6318
|
*/
|
@@ -6262,14 +6324,14 @@
|
|
6262
6324
|
* contains elements `predicate` returns falsey for. The predicate is bound
|
6263
6325
|
* to `thisArg` and invoked with three arguments; (value, index|key, collection).
|
6264
6326
|
*
|
6265
|
-
* If a property name is provided for `predicate` the created
|
6327
|
+
* If a property name is provided for `predicate` the created `_.property`
|
6266
6328
|
* style callback returns the property value of the given element.
|
6267
6329
|
*
|
6268
|
-
* If value is also provided for `thisArg` the created
|
6330
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
6269
6331
|
* style callback returns `true` for elements that have a matching property
|
6270
6332
|
* value, else `false`.
|
6271
6333
|
*
|
6272
|
-
* If an object is provided for `predicate` the created
|
6334
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
6273
6335
|
* callback returns `true` for elements that have the properties of the given
|
6274
6336
|
* object, else `false`.
|
6275
6337
|
*
|
@@ -6278,16 +6340,19 @@
|
|
6278
6340
|
* @category Collection
|
6279
6341
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6280
6342
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
6281
|
-
* per iteration.
|
6282
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
6343
|
+
* per iteration.
|
6283
6344
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
6284
6345
|
* @returns {Array} Returns the array of grouped elements.
|
6285
6346
|
* @example
|
6286
6347
|
*
|
6287
|
-
* _.partition([1, 2, 3], function(n) {
|
6348
|
+
* _.partition([1, 2, 3], function(n) {
|
6349
|
+
* return n % 2;
|
6350
|
+
* });
|
6288
6351
|
* // => [[1, 3], [2]]
|
6289
6352
|
*
|
6290
|
-
* _.partition([1.2, 2.3, 3.4], function(n) {
|
6353
|
+
* _.partition([1.2, 2.3, 3.4], function(n) {
|
6354
|
+
* return this.floor(n) % 2;
|
6355
|
+
* }, Math);
|
6291
6356
|
* // => [[1, 3], [2]]
|
6292
6357
|
*
|
6293
6358
|
* var users = [
|
@@ -6296,17 +6361,19 @@
|
|
6296
6361
|
* { 'user': 'pebbles', 'age': 1, 'active': false }
|
6297
6362
|
* ];
|
6298
6363
|
*
|
6299
|
-
* var mapper = function(array) {
|
6364
|
+
* var mapper = function(array) {
|
6365
|
+
* return _.pluck(array, 'user');
|
6366
|
+
* };
|
6300
6367
|
*
|
6301
|
-
* // using the
|
6368
|
+
* // using the `_.matches` callback shorthand
|
6302
6369
|
* _.map(_.partition(users, { 'age': 1, 'active': false }), mapper);
|
6303
6370
|
* // => [['pebbles'], ['barney', 'fred']]
|
6304
6371
|
*
|
6305
|
-
* // using the
|
6372
|
+
* // using the `_.matchesProperty` callback shorthand
|
6306
6373
|
* _.map(_.partition(users, 'active', false), mapper);
|
6307
6374
|
* // => [['barney', 'pebbles'], ['fred']]
|
6308
6375
|
*
|
6309
|
-
* // using the
|
6376
|
+
* // using the `_.property` callback shorthand
|
6310
6377
|
* _.map(_.partition(users, 'active'), mapper);
|
6311
6378
|
* // => [['fred'], ['barney', 'pebbles']]
|
6312
6379
|
*/
|
@@ -6366,14 +6433,16 @@
|
|
6366
6433
|
* @returns {*} Returns the accumulated value.
|
6367
6434
|
* @example
|
6368
6435
|
*
|
6369
|
-
*
|
6370
|
-
*
|
6436
|
+
* _.reduce([1, 2], function(sum, n) {
|
6437
|
+
* return sum + n;
|
6438
|
+
* });
|
6439
|
+
* // => 3
|
6371
6440
|
*
|
6372
|
-
*
|
6441
|
+
* _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
|
6373
6442
|
* result[key] = n * 3;
|
6374
6443
|
* return result;
|
6375
6444
|
* }, {});
|
6376
|
-
* // => { 'a': 3, 'b': 6
|
6445
|
+
* // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
|
6377
6446
|
*/
|
6378
6447
|
function reduce(collection, iteratee, accumulator, thisArg) {
|
6379
6448
|
var func = isArray(collection) ? arrayReduce : baseReduce;
|
@@ -6396,7 +6465,10 @@
|
|
6396
6465
|
* @example
|
6397
6466
|
*
|
6398
6467
|
* var array = [[0, 1], [2, 3], [4, 5]];
|
6399
|
-
*
|
6468
|
+
*
|
6469
|
+
* _.reduceRight(array, function(flattened, other) {
|
6470
|
+
* return flattened.concat(other);
|
6471
|
+
* }, []);
|
6400
6472
|
* // => [4, 5, 2, 3, 0, 1]
|
6401
6473
|
*/
|
6402
6474
|
function reduceRight(collection, iteratee, accumulator, thisArg) {
|
@@ -6408,14 +6480,14 @@
|
|
6408
6480
|
* The opposite of `_.filter`; this method returns the elements of `collection`
|
6409
6481
|
* that `predicate` does **not** return truthy for.
|
6410
6482
|
*
|
6411
|
-
* If a property name is provided for `predicate` the created
|
6483
|
+
* If a property name is provided for `predicate` the created `_.property`
|
6412
6484
|
* style callback returns the property value of the given element.
|
6413
6485
|
*
|
6414
|
-
* If value is also provided for `thisArg` the created
|
6486
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
6415
6487
|
* style callback returns `true` for elements that have a matching property
|
6416
6488
|
* value, else `false`.
|
6417
6489
|
*
|
6418
|
-
* If an object is provided for `predicate` the created
|
6490
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
6419
6491
|
* callback returns `true` for elements that have the properties of the given
|
6420
6492
|
* object, else `false`.
|
6421
6493
|
*
|
@@ -6424,13 +6496,14 @@
|
|
6424
6496
|
* @category Collection
|
6425
6497
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6426
6498
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
6427
|
-
* per iteration.
|
6428
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
6499
|
+
* per iteration.
|
6429
6500
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
6430
6501
|
* @returns {Array} Returns the new filtered array.
|
6431
6502
|
* @example
|
6432
6503
|
*
|
6433
|
-
*
|
6504
|
+
* _.reject([1, 2, 3, 4], function(n) {
|
6505
|
+
* return n % 2 == 0;
|
6506
|
+
* });
|
6434
6507
|
* // => [1, 3]
|
6435
6508
|
*
|
6436
6509
|
* var users = [
|
@@ -6438,15 +6511,15 @@
|
|
6438
6511
|
* { 'user': 'fred', 'age': 40, 'active': true }
|
6439
6512
|
* ];
|
6440
6513
|
*
|
6441
|
-
* // using the
|
6514
|
+
* // using the `_.matches` callback shorthand
|
6442
6515
|
* _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user');
|
6443
6516
|
* // => ['barney']
|
6444
6517
|
*
|
6445
|
-
* // using the
|
6518
|
+
* // using the `_.matchesProperty` callback shorthand
|
6446
6519
|
* _.pluck(_.reject(users, 'active', false), 'user');
|
6447
6520
|
* // => ['fred']
|
6448
6521
|
*
|
6449
|
-
* // using the
|
6522
|
+
* // using the `_.property` callback shorthand
|
6450
6523
|
* _.pluck(_.reject(users, 'active'), 'user');
|
6451
6524
|
* // => ['barney']
|
6452
6525
|
*/
|
@@ -6530,12 +6603,12 @@
|
|
6530
6603
|
* @returns {number} Returns the size of `collection`.
|
6531
6604
|
* @example
|
6532
6605
|
*
|
6533
|
-
* _.size([1, 2]);
|
6534
|
-
* // => 2
|
6535
|
-
*
|
6536
|
-
* _.size({ 'one': 1, 'two': 2, 'three': 3 });
|
6606
|
+
* _.size([1, 2, 3]);
|
6537
6607
|
* // => 3
|
6538
6608
|
*
|
6609
|
+
* _.size({ 'a': 1, 'b': 2 });
|
6610
|
+
* // => 2
|
6611
|
+
*
|
6539
6612
|
* _.size('pebbles');
|
6540
6613
|
* // => 7
|
6541
6614
|
*/
|
@@ -6550,14 +6623,14 @@
|
|
6550
6623
|
* over the entire collection. The predicate is bound to `thisArg` and invoked
|
6551
6624
|
* with three arguments; (value, index|key, collection).
|
6552
6625
|
*
|
6553
|
-
* If a property name is provided for `predicate` the created
|
6626
|
+
* If a property name is provided for `predicate` the created `_.property`
|
6554
6627
|
* style callback returns the property value of the given element.
|
6555
6628
|
*
|
6556
|
-
* If value is also provided for `thisArg` the created
|
6629
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
6557
6630
|
* style callback returns `true` for elements that have a matching property
|
6558
6631
|
* value, else `false`.
|
6559
6632
|
*
|
6560
|
-
* If an object is provided for `predicate` the created
|
6633
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
6561
6634
|
* callback returns `true` for elements that have the properties of the given
|
6562
6635
|
* object, else `false`.
|
6563
6636
|
*
|
@@ -6567,8 +6640,7 @@
|
|
6567
6640
|
* @category Collection
|
6568
6641
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6569
6642
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
6570
|
-
* per iteration.
|
6571
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
6643
|
+
* per iteration.
|
6572
6644
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
6573
6645
|
* @returns {boolean} Returns `true` if any element passes the predicate check,
|
6574
6646
|
* else `false`.
|
@@ -6578,19 +6650,19 @@
|
|
6578
6650
|
* // => true
|
6579
6651
|
*
|
6580
6652
|
* var users = [
|
6581
|
-
* { 'user': 'barney', '
|
6582
|
-
* { 'user': 'fred', '
|
6653
|
+
* { 'user': 'barney', 'active': true },
|
6654
|
+
* { 'user': 'fred', 'active': false }
|
6583
6655
|
* ];
|
6584
6656
|
*
|
6585
|
-
* // using the
|
6586
|
-
* _.some(users, { '
|
6657
|
+
* // using the `_.matches` callback shorthand
|
6658
|
+
* _.some(users, { user': 'barney', 'active': false });
|
6587
6659
|
* // => false
|
6588
6660
|
*
|
6589
|
-
* // using the
|
6661
|
+
* // using the `_.matchesProperty` callback shorthand
|
6590
6662
|
* _.some(users, 'active', false);
|
6591
6663
|
* // => true
|
6592
6664
|
*
|
6593
|
-
* // using the
|
6665
|
+
* // using the `_.property` callback shorthand
|
6594
6666
|
* _.some(users, 'active');
|
6595
6667
|
* // => true
|
6596
6668
|
*/
|
@@ -6609,14 +6681,14 @@
|
|
6609
6681
|
* The `iteratee` is bound to `thisArg` and invoked with three arguments;
|
6610
6682
|
* (value, index|key, collection).
|
6611
6683
|
*
|
6612
|
-
* If a property name is provided for `predicate` the created
|
6684
|
+
* If a property name is provided for `predicate` the created `_.property`
|
6613
6685
|
* style callback returns the property value of the given element.
|
6614
6686
|
*
|
6615
|
-
* If value is also provided for `thisArg` the created
|
6687
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
6616
6688
|
* style callback returns `true` for elements that have a matching property
|
6617
6689
|
* value, else `false`.
|
6618
6690
|
*
|
6619
|
-
* If an object is provided for `predicate` the created
|
6691
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
6620
6692
|
* callback returns `true` for elements that have the properties of the given
|
6621
6693
|
* object, else `false`.
|
6622
6694
|
*
|
@@ -6626,15 +6698,19 @@
|
|
6626
6698
|
* @param {Array|Object|string} collection The collection to iterate over.
|
6627
6699
|
* @param {Array|Function|Object|string} [iteratee=_.identity] The function
|
6628
6700
|
* invoked per iteration. If a property name or an object is provided it is
|
6629
|
-
* used to create a
|
6701
|
+
* used to create a `_.property` or `_.matches` style callback respectively.
|
6630
6702
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
6631
6703
|
* @returns {Array} Returns the new sorted array.
|
6632
6704
|
* @example
|
6633
6705
|
*
|
6634
|
-
* _.sortBy([1, 2, 3], function(n) {
|
6706
|
+
* _.sortBy([1, 2, 3], function(n) {
|
6707
|
+
* return Math.sin(n);
|
6708
|
+
* });
|
6635
6709
|
* // => [3, 1, 2]
|
6636
6710
|
*
|
6637
|
-
* _.sortBy([1, 2, 3], function(n) {
|
6711
|
+
* _.sortBy([1, 2, 3], function(n) {
|
6712
|
+
* return this.sin(n);
|
6713
|
+
* }, Math);
|
6638
6714
|
* // => [3, 1, 2]
|
6639
6715
|
*
|
6640
6716
|
* var users = [
|
@@ -6643,7 +6719,7 @@
|
|
6643
6719
|
* { 'user': 'barney' }
|
6644
6720
|
* ];
|
6645
6721
|
*
|
6646
|
-
* // using the
|
6722
|
+
* // using the `_.property` callback shorthand
|
6647
6723
|
* _.pluck(_.sortBy(users, 'user'), 'user');
|
6648
6724
|
* // => ['barney', 'fred', 'pebbles']
|
6649
6725
|
*/
|
@@ -6751,7 +6827,9 @@
|
|
6751
6827
|
* @category Date
|
6752
6828
|
* @example
|
6753
6829
|
*
|
6754
|
-
* _.defer(function(stamp) {
|
6830
|
+
* _.defer(function(stamp) {
|
6831
|
+
* console.log(_.now() - stamp);
|
6832
|
+
* }, _.now());
|
6755
6833
|
* // => logs the number of milliseconds it took for the deferred function to be invoked
|
6756
6834
|
*/
|
6757
6835
|
var now = nativeNow || function() {
|
@@ -6927,7 +7005,9 @@
|
|
6927
7005
|
*
|
6928
7006
|
* var view = {
|
6929
7007
|
* 'label': 'docs',
|
6930
|
-
* 'onClick': function() {
|
7008
|
+
* 'onClick': function() {
|
7009
|
+
* console.log('clicked ' + this.label);
|
7010
|
+
* }
|
6931
7011
|
* };
|
6932
7012
|
*
|
6933
7013
|
* _.bindAll(view);
|
@@ -7280,7 +7360,9 @@
|
|
7280
7360
|
* @returns {number} Returns the timer id.
|
7281
7361
|
* @example
|
7282
7362
|
*
|
7283
|
-
* _.defer(function(text) {
|
7363
|
+
* _.defer(function(text) {
|
7364
|
+
* console.log(text);
|
7365
|
+
* }, 'deferred');
|
7284
7366
|
* // logs 'deferred' after one or more milliseconds
|
7285
7367
|
*/
|
7286
7368
|
function defer(func) {
|
@@ -7300,7 +7382,9 @@
|
|
7300
7382
|
* @returns {number} Returns the timer id.
|
7301
7383
|
* @example
|
7302
7384
|
*
|
7303
|
-
* _.delay(function(text) {
|
7385
|
+
* _.delay(function(text) {
|
7386
|
+
* console.log(text);
|
7387
|
+
* }, 1000, 'later');
|
7304
7388
|
* // => logs 'later' after one second
|
7305
7389
|
*/
|
7306
7390
|
function delay(func, wait) {
|
@@ -7338,7 +7422,7 @@
|
|
7338
7422
|
if (!length) {
|
7339
7423
|
return function() { return arguments[0]; };
|
7340
7424
|
}
|
7341
|
-
if (!arrayEvery(funcs,
|
7425
|
+
if (!arrayEvery(funcs, baseIsFunction)) {
|
7342
7426
|
throw new TypeError(FUNC_ERROR_TEXT);
|
7343
7427
|
}
|
7344
7428
|
return function() {
|
@@ -7383,7 +7467,7 @@
|
|
7383
7467
|
if (fromIndex < 0) {
|
7384
7468
|
return function() { return arguments[0]; };
|
7385
7469
|
}
|
7386
|
-
if (!arrayEvery(funcs,
|
7470
|
+
if (!arrayEvery(funcs, baseIsFunction)) {
|
7387
7471
|
throw new TypeError(FUNC_ERROR_TEXT);
|
7388
7472
|
}
|
7389
7473
|
return function() {
|
@@ -7618,7 +7702,9 @@
|
|
7618
7702
|
* // => ['a', 'b', 'c']
|
7619
7703
|
*
|
7620
7704
|
* var map = _.rearg(_.map, [1, 0]);
|
7621
|
-
* map(function(n) {
|
7705
|
+
* map(function(n) {
|
7706
|
+
* return n * 3;
|
7707
|
+
* }, [1, 2, 3]);
|
7622
7708
|
* // => [3, 6, 9]
|
7623
7709
|
*/
|
7624
7710
|
function rearg(func) {
|
@@ -7697,8 +7783,9 @@
|
|
7697
7783
|
* jQuery(window).on('scroll', _.throttle(updatePosition, 100));
|
7698
7784
|
*
|
7699
7785
|
* // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes
|
7700
|
-
*
|
7701
|
-
*
|
7786
|
+
* jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {
|
7787
|
+
* 'trailing': false
|
7788
|
+
* }));
|
7702
7789
|
*
|
7703
7790
|
* // cancel a trailing throttled call
|
7704
7791
|
* jQuery(window).on('popstate', throttled.cancel);
|
@@ -7788,22 +7875,26 @@
|
|
7788
7875
|
* // => false
|
7789
7876
|
*
|
7790
7877
|
* // using a customizer callback
|
7791
|
-
* var
|
7792
|
-
*
|
7878
|
+
* var el = _.clone(document.body, function(value) {
|
7879
|
+
* if (_.isElement(value)) {
|
7880
|
+
* return value.cloneNode(false);
|
7881
|
+
* }
|
7793
7882
|
* });
|
7794
7883
|
*
|
7795
|
-
*
|
7884
|
+
* el === document.body
|
7796
7885
|
* // => false
|
7797
|
-
*
|
7886
|
+
* el.nodeName
|
7798
7887
|
* // => BODY
|
7799
|
-
*
|
7888
|
+
* el.childNodes.length;
|
7800
7889
|
* // => 0
|
7801
7890
|
*/
|
7802
7891
|
function clone(value, isDeep, customizer, thisArg) {
|
7803
|
-
|
7804
|
-
|
7892
|
+
if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {
|
7893
|
+
isDeep = false;
|
7894
|
+
}
|
7895
|
+
else if (typeof isDeep == 'function') {
|
7805
7896
|
thisArg = customizer;
|
7806
|
-
customizer =
|
7897
|
+
customizer = isDeep;
|
7807
7898
|
isDeep = false;
|
7808
7899
|
}
|
7809
7900
|
customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1);
|
@@ -7843,14 +7934,16 @@
|
|
7843
7934
|
*
|
7844
7935
|
* // using a customizer callback
|
7845
7936
|
* var el = _.cloneDeep(document.body, function(value) {
|
7846
|
-
*
|
7937
|
+
* if (_.isElement(value)) {
|
7938
|
+
* return value.cloneNode(true);
|
7939
|
+
* }
|
7847
7940
|
* });
|
7848
7941
|
*
|
7849
|
-
*
|
7942
|
+
* el === document.body
|
7850
7943
|
* // => false
|
7851
|
-
*
|
7944
|
+
* el.nodeName
|
7852
7945
|
* // => BODY
|
7853
|
-
*
|
7946
|
+
* el.childNodes.length;
|
7854
7947
|
* // => 20
|
7855
7948
|
*/
|
7856
7949
|
function cloneDeep(value, customizer, thisArg) {
|
@@ -7868,7 +7961,7 @@
|
|
7868
7961
|
* @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
|
7869
7962
|
* @example
|
7870
7963
|
*
|
7871
|
-
* (function() { return
|
7964
|
+
* _.isArguments(function() { return arguments; }());
|
7872
7965
|
* // => true
|
7873
7966
|
*
|
7874
7967
|
* _.isArguments([1, 2, 3]);
|
@@ -7892,7 +7985,7 @@
|
|
7892
7985
|
* _.isArray([1, 2, 3]);
|
7893
7986
|
* // => true
|
7894
7987
|
*
|
7895
|
-
* (function() { return
|
7988
|
+
* _.isArray(function() { return arguments; }());
|
7896
7989
|
* // => false
|
7897
7990
|
*/
|
7898
7991
|
var isArray = nativeIsArray || function(value) {
|
@@ -8042,7 +8135,9 @@
|
|
8042
8135
|
* var other = ['hi', 'goodbye'];
|
8043
8136
|
*
|
8044
8137
|
* _.isEqual(array, other, function(value, other) {
|
8045
|
-
*
|
8138
|
+
* if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) {
|
8139
|
+
* return true;
|
8140
|
+
* }
|
8046
8141
|
* });
|
8047
8142
|
* // => true
|
8048
8143
|
*/
|
@@ -8125,20 +8220,12 @@
|
|
8125
8220
|
* _.isFunction(/abc/);
|
8126
8221
|
* // => false
|
8127
8222
|
*/
|
8128
|
-
|
8129
|
-
//
|
8130
|
-
//
|
8131
|
-
|
8132
|
-
|
8133
|
-
|
8134
|
-
if (isFunction(/x/) || (Uint8Array && !isFunction(Uint8Array))) {
|
8135
|
-
isFunction = function(value) {
|
8136
|
-
// The use of `Object#toString` avoids issues with the `typeof` operator
|
8137
|
-
// in older versions of Chrome and Safari which return 'function' for regexes
|
8138
|
-
// and Safari 8 equivalents which return 'object' for typed array constructors.
|
8139
|
-
return objToString.call(value) == funcTag;
|
8140
|
-
};
|
8141
|
-
}
|
8223
|
+
var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) {
|
8224
|
+
// The use of `Object#toString` avoids issues with the `typeof` operator
|
8225
|
+
// in older versions of Chrome and Safari which return 'function' for regexes
|
8226
|
+
// and Safari 8 equivalents which return 'object' for typed array constructors.
|
8227
|
+
return objToString.call(value) == funcTag;
|
8228
|
+
};
|
8142
8229
|
|
8143
8230
|
/**
|
8144
8231
|
* Checks if `value` is the language type of `Object`.
|
@@ -8467,7 +8554,9 @@
|
|
8467
8554
|
* @returns {Array} Returns the converted array.
|
8468
8555
|
* @example
|
8469
8556
|
*
|
8470
|
-
* (function() {
|
8557
|
+
* (function() {
|
8558
|
+
* return _.toArray(arguments).slice(1);
|
8559
|
+
* }(1, 2, 3));
|
8471
8560
|
* // => [2, 3]
|
8472
8561
|
*/
|
8473
8562
|
function toArray(value) {
|
@@ -8564,7 +8653,9 @@
|
|
8564
8653
|
* Shape.call(this);
|
8565
8654
|
* }
|
8566
8655
|
*
|
8567
|
-
* Circle.prototype = _.create(Shape.prototype, {
|
8656
|
+
* Circle.prototype = _.create(Shape.prototype, {
|
8657
|
+
* 'constructor': Circle
|
8658
|
+
* });
|
8568
8659
|
*
|
8569
8660
|
* var circle = new Circle;
|
8570
8661
|
* circle instanceof Circle;
|
@@ -8610,14 +8701,14 @@
|
|
8610
8701
|
* This method is like `_.findIndex` except that it returns the key of the
|
8611
8702
|
* first element `predicate` returns truthy for, instead of the element itself.
|
8612
8703
|
*
|
8613
|
-
* If a property name is provided for `predicate` the created
|
8704
|
+
* If a property name is provided for `predicate` the created `_.property`
|
8614
8705
|
* style callback returns the property value of the given element.
|
8615
8706
|
*
|
8616
|
-
* If value is also provided for `thisArg` the created
|
8707
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
8617
8708
|
* style callback returns `true` for elements that have a matching property
|
8618
8709
|
* value, else `false`.
|
8619
8710
|
*
|
8620
|
-
* If an object is provided for `predicate` the created
|
8711
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
8621
8712
|
* callback returns `true` for elements that have the properties of the given
|
8622
8713
|
* object, else `false`.
|
8623
8714
|
*
|
@@ -8626,8 +8717,7 @@
|
|
8626
8717
|
* @category Object
|
8627
8718
|
* @param {Object} object The object to search.
|
8628
8719
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
8629
|
-
* per iteration.
|
8630
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
8720
|
+
* per iteration.
|
8631
8721
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
8632
8722
|
* @returns {string|undefined} Returns the key of the matched element, else `undefined`.
|
8633
8723
|
* @example
|
@@ -8638,18 +8728,20 @@
|
|
8638
8728
|
* 'pebbles': { 'age': 1, 'active': true }
|
8639
8729
|
* };
|
8640
8730
|
*
|
8641
|
-
* _.findKey(users, function(chr) {
|
8731
|
+
* _.findKey(users, function(chr) {
|
8732
|
+
* return chr.age < 40;
|
8733
|
+
* });
|
8642
8734
|
* // => 'barney' (iteration order is not guaranteed)
|
8643
8735
|
*
|
8644
|
-
* // using the
|
8736
|
+
* // using the `_.matches` callback shorthand
|
8645
8737
|
* _.findKey(users, { 'age': 1, 'active': true });
|
8646
8738
|
* // => 'pebbles'
|
8647
8739
|
*
|
8648
|
-
* // using the
|
8740
|
+
* // using the `_.matchesProperty` callback shorthand
|
8649
8741
|
* _.findKey(users, 'active', false);
|
8650
8742
|
* // => 'fred'
|
8651
8743
|
*
|
8652
|
-
* // using the
|
8744
|
+
* // using the `_.property` callback shorthand
|
8653
8745
|
* _.findKey(users, 'active');
|
8654
8746
|
* // => 'barney'
|
8655
8747
|
*/
|
@@ -8662,14 +8754,14 @@
|
|
8662
8754
|
* This method is like `_.findKey` except that it iterates over elements of
|
8663
8755
|
* a collection in the opposite order.
|
8664
8756
|
*
|
8665
|
-
* If a property name is provided for `predicate` the created
|
8757
|
+
* If a property name is provided for `predicate` the created `_.property`
|
8666
8758
|
* style callback returns the property value of the given element.
|
8667
8759
|
*
|
8668
|
-
* If value is also provided for `thisArg` the created
|
8760
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
8669
8761
|
* style callback returns `true` for elements that have a matching property
|
8670
8762
|
* value, else `false`.
|
8671
8763
|
*
|
8672
|
-
* If an object is provided for `predicate` the created
|
8764
|
+
* If an object is provided for `predicate` the created `_.matches` style
|
8673
8765
|
* callback returns `true` for elements that have the properties of the given
|
8674
8766
|
* object, else `false`.
|
8675
8767
|
*
|
@@ -8678,8 +8770,7 @@
|
|
8678
8770
|
* @category Object
|
8679
8771
|
* @param {Object} object The object to search.
|
8680
8772
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
8681
|
-
* per iteration.
|
8682
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
8773
|
+
* per iteration.
|
8683
8774
|
* @param {*} [thisArg] The `this` binding of `predicate`.
|
8684
8775
|
* @returns {string|undefined} Returns the key of the matched element, else `undefined`.
|
8685
8776
|
* @example
|
@@ -8690,18 +8781,20 @@
|
|
8690
8781
|
* 'pebbles': { 'age': 1, 'active': true }
|
8691
8782
|
* };
|
8692
8783
|
*
|
8693
|
-
* _.findLastKey(users, function(chr) {
|
8784
|
+
* _.findLastKey(users, function(chr) {
|
8785
|
+
* return chr.age < 40;
|
8786
|
+
* });
|
8694
8787
|
* // => returns `pebbles` assuming `_.findKey` returns `barney`
|
8695
8788
|
*
|
8696
|
-
* // using the
|
8789
|
+
* // using the `_.matches` callback shorthand
|
8697
8790
|
* _.findLastKey(users, { 'age': 36, 'active': true });
|
8698
8791
|
* // => 'barney'
|
8699
8792
|
*
|
8700
|
-
* // using the
|
8793
|
+
* // using the `_.matchesProperty` callback shorthand
|
8701
8794
|
* _.findLastKey(users, 'active', false);
|
8702
8795
|
* // => 'fred'
|
8703
8796
|
*
|
8704
|
-
* // using the
|
8797
|
+
* // using the `_.property` callback shorthand
|
8705
8798
|
* _.findLastKey(users, 'active');
|
8706
8799
|
* // => 'pebbles'
|
8707
8800
|
*/
|
@@ -8789,10 +8882,17 @@
|
|
8789
8882
|
* @returns {Object} Returns `object`.
|
8790
8883
|
* @example
|
8791
8884
|
*
|
8792
|
-
*
|
8885
|
+
* function Foo() {
|
8886
|
+
* this.a = 1;
|
8887
|
+
* this.b = 2;
|
8888
|
+
* }
|
8889
|
+
*
|
8890
|
+
* Foo.prototype.c = 3;
|
8891
|
+
*
|
8892
|
+
* _.forOwn(new Foo, function(value, key) {
|
8793
8893
|
* console.log(key);
|
8794
8894
|
* });
|
8795
|
-
* // => logs '
|
8895
|
+
* // => logs 'a' and 'b' (iteration order is not guaranteed)
|
8796
8896
|
*/
|
8797
8897
|
function forOwn(object, iteratee, thisArg) {
|
8798
8898
|
if (typeof iteratee != 'function' || typeof thisArg != 'undefined') {
|
@@ -8814,10 +8914,17 @@
|
|
8814
8914
|
* @returns {Object} Returns `object`.
|
8815
8915
|
* @example
|
8816
8916
|
*
|
8817
|
-
*
|
8917
|
+
* function Foo() {
|
8918
|
+
* this.a = 1;
|
8919
|
+
* this.b = 2;
|
8920
|
+
* }
|
8921
|
+
*
|
8922
|
+
* Foo.prototype.c = 3;
|
8923
|
+
*
|
8924
|
+
* _.forOwnRight(new Foo, function(value, key) {
|
8818
8925
|
* console.log(key);
|
8819
8926
|
* });
|
8820
|
-
* // => logs '
|
8927
|
+
* // => logs 'b' and 'a' assuming `_.forOwn` logs 'a' and 'b'
|
8821
8928
|
*/
|
8822
8929
|
function forOwnRight(object, iteratee, thisArg) {
|
8823
8930
|
iteratee = bindCallback(iteratee, thisArg, 3);
|
@@ -8837,7 +8944,7 @@
|
|
8837
8944
|
* @example
|
8838
8945
|
*
|
8839
8946
|
* _.functions(_);
|
8840
|
-
* // => ['
|
8947
|
+
* // => ['after', 'ary', 'assign', ...]
|
8841
8948
|
*/
|
8842
8949
|
function functions(object) {
|
8843
8950
|
return baseFunctions(object, keysIn(object));
|
@@ -8855,7 +8962,9 @@
|
|
8855
8962
|
* @returns {boolean} Returns `true` if `key` is a direct property, else `false`.
|
8856
8963
|
* @example
|
8857
8964
|
*
|
8858
|
-
*
|
8965
|
+
* var object = { 'a': 1, 'b': 2, 'c': 3 };
|
8966
|
+
*
|
8967
|
+
* _.has(object, 'b');
|
8859
8968
|
* // => true
|
8860
8969
|
*/
|
8861
8970
|
function has(object, key) {
|
@@ -8876,16 +8985,14 @@
|
|
8876
8985
|
* @returns {Object} Returns the new inverted object.
|
8877
8986
|
* @example
|
8878
8987
|
*
|
8879
|
-
*
|
8880
|
-
* // => { 'fred': 'first', 'barney': 'second' }
|
8988
|
+
* var object = { 'a': 1, 'b': 2, 'c': 1 };
|
8881
8989
|
*
|
8882
|
-
*
|
8883
|
-
*
|
8884
|
-
* // => { 'fred': 'third', 'barney': 'second' }
|
8990
|
+
* _.invert(object);
|
8991
|
+
* // => { '1': 'c', '2': 'b' }
|
8885
8992
|
*
|
8886
8993
|
* // with `multiValue`
|
8887
|
-
* _.invert(
|
8888
|
-
* // => { '
|
8994
|
+
* _.invert(object, true);
|
8995
|
+
* // => { '1': ['a', 'c'], '2': ['b'] }
|
8889
8996
|
*/
|
8890
8997
|
function invert(object, multiValue, guard) {
|
8891
8998
|
if (guard && isIterateeCall(object, multiValue, guard)) {
|
@@ -9010,14 +9117,14 @@
|
|
9010
9117
|
* iteratee function is bound to `thisArg` and invoked with three arguments;
|
9011
9118
|
* (value, key, object).
|
9012
9119
|
*
|
9013
|
-
* If a property name is provided for `iteratee` the created
|
9120
|
+
* If a property name is provided for `iteratee` the created `_.property`
|
9014
9121
|
* style callback returns the property value of the given element.
|
9015
9122
|
*
|
9016
|
-
* If value is also provided for `thisArg` the created
|
9123
|
+
* If a value is also provided for `thisArg` the created `_.matchesProperty`
|
9017
9124
|
* style callback returns `true` for elements that have a matching property
|
9018
9125
|
* value, else `false`.
|
9019
9126
|
*
|
9020
|
-
* If an object is provided for `iteratee` the created
|
9127
|
+
* If an object is provided for `iteratee` the created `_.matches` style
|
9021
9128
|
* callback returns `true` for elements that have the properties of the given
|
9022
9129
|
* object, else `false`.
|
9023
9130
|
*
|
@@ -9026,21 +9133,22 @@
|
|
9026
9133
|
* @category Object
|
9027
9134
|
* @param {Object} object The object to iterate over.
|
9028
9135
|
* @param {Function|Object|string} [iteratee=_.identity] The function invoked
|
9029
|
-
* per iteration.
|
9030
|
-
* create a "_.property" or "_.matches" style callback respectively.
|
9136
|
+
* per iteration.
|
9031
9137
|
* @param {*} [thisArg] The `this` binding of `iteratee`.
|
9032
9138
|
* @returns {Object} Returns the new mapped object.
|
9033
9139
|
* @example
|
9034
9140
|
*
|
9035
|
-
* _.mapValues({ 'a': 1, 'b': 2
|
9036
|
-
*
|
9141
|
+
* _.mapValues({ 'a': 1, 'b': 2 }, function(n) {
|
9142
|
+
* return n * 3;
|
9143
|
+
* });
|
9144
|
+
* // => { 'a': 3, 'b': 6 }
|
9037
9145
|
*
|
9038
9146
|
* var users = {
|
9039
9147
|
* 'fred': { 'user': 'fred', 'age': 40 },
|
9040
9148
|
* 'pebbles': { 'user': 'pebbles', 'age': 1 }
|
9041
9149
|
* };
|
9042
9150
|
*
|
9043
|
-
* // using the
|
9151
|
+
* // using the `_.property` callback shorthand
|
9044
9152
|
* _.mapValues(users, 'age');
|
9045
9153
|
* // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
|
9046
9154
|
*/
|
@@ -9096,7 +9204,9 @@
|
|
9096
9204
|
* };
|
9097
9205
|
*
|
9098
9206
|
* _.merge(object, other, function(a, b) {
|
9099
|
-
*
|
9207
|
+
* if (_.isArray(a)) {
|
9208
|
+
* return a.concat(b);
|
9209
|
+
* }
|
9100
9210
|
* });
|
9101
9211
|
* // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
|
9102
9212
|
*/
|
@@ -9262,18 +9372,16 @@
|
|
9262
9372
|
* @returns {*} Returns the accumulated value.
|
9263
9373
|
* @example
|
9264
9374
|
*
|
9265
|
-
*
|
9266
|
-
* n *= n;
|
9267
|
-
*
|
9268
|
-
* return result.push(n) < 3;
|
9269
|
-
* }
|
9375
|
+
* _.transform([2, 3, 4], function(result, n) {
|
9376
|
+
* result.push(n *= n);
|
9377
|
+
* return n % 2 == 0;
|
9270
9378
|
* });
|
9271
|
-
* // => [
|
9379
|
+
* // => [4, 9]
|
9272
9380
|
*
|
9273
|
-
*
|
9381
|
+
* _.transform({ 'a': 1, 'b': 2 }, function(result, n, key) {
|
9274
9382
|
* result[key] = n * 3;
|
9275
9383
|
* });
|
9276
|
-
* // => { 'a': 3, 'b': 6
|
9384
|
+
* // => { 'a': 3, 'b': 6 }
|
9277
9385
|
*/
|
9278
9386
|
function transform(object, iteratee, accumulator, thisArg) {
|
9279
9387
|
var isArr = isArray(object) || isTypedArray(object);
|
@@ -9355,6 +9463,48 @@
|
|
9355
9463
|
|
9356
9464
|
/*------------------------------------------------------------------------*/
|
9357
9465
|
|
9466
|
+
/**
|
9467
|
+
* Checks if `n` is between `start` and up to but not including, `end`. If
|
9468
|
+
* `end` is not specified it defaults to `start` with `start` becoming `0`.
|
9469
|
+
*
|
9470
|
+
* @static
|
9471
|
+
* @memberOf _
|
9472
|
+
* @category Number
|
9473
|
+
* @param {number} n The number to check.
|
9474
|
+
* @param {number} [start=0] The start of the range.
|
9475
|
+
* @param {number} end The end of the range.
|
9476
|
+
* @returns {boolean} Returns `true` if `n` is in the range, else `false`.
|
9477
|
+
* @example
|
9478
|
+
*
|
9479
|
+
* _.inRange(3, 2, 4);
|
9480
|
+
* // => true
|
9481
|
+
*
|
9482
|
+
* _.inRange(4, 8);
|
9483
|
+
* // => true
|
9484
|
+
*
|
9485
|
+
* _.inRange(4, 2);
|
9486
|
+
* // => false
|
9487
|
+
*
|
9488
|
+
* _.inRange(2, 2);
|
9489
|
+
* // => false
|
9490
|
+
*
|
9491
|
+
* _.inRange(1.2, 2);
|
9492
|
+
* // => true
|
9493
|
+
*
|
9494
|
+
* _.inRange(5.2, 4);
|
9495
|
+
* // => false
|
9496
|
+
*/
|
9497
|
+
function inRange(value, start, end) {
|
9498
|
+
start = +start || 0;
|
9499
|
+
if (typeof end === 'undefined') {
|
9500
|
+
end = start;
|
9501
|
+
start = 0;
|
9502
|
+
} else {
|
9503
|
+
end = +end || 0;
|
9504
|
+
}
|
9505
|
+
return value >= start && value < end;
|
9506
|
+
}
|
9507
|
+
|
9358
9508
|
/**
|
9359
9509
|
* Produces a random number between `min` and `max` (inclusive). If only one
|
9360
9510
|
* argument is provided a number between `0` and the given number is returned.
|
@@ -9574,7 +9724,7 @@
|
|
9574
9724
|
}
|
9575
9725
|
|
9576
9726
|
/**
|
9577
|
-
* Converts `string` to kebab case
|
9727
|
+
* Converts `string` to kebab case.
|
9578
9728
|
* See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles) for
|
9579
9729
|
* more details.
|
9580
9730
|
*
|
@@ -10173,13 +10323,21 @@
|
|
10173
10323
|
* _.trunc('hi-diddly-ho there, neighborino', 24);
|
10174
10324
|
* // => 'hi-diddly-ho there, n...'
|
10175
10325
|
*
|
10176
|
-
* _.trunc('hi-diddly-ho there, neighborino', {
|
10326
|
+
* _.trunc('hi-diddly-ho there, neighborino', {
|
10327
|
+
* 'length': 24,
|
10328
|
+
* 'separator': ' '
|
10329
|
+
* });
|
10177
10330
|
* // => 'hi-diddly-ho there,...'
|
10178
10331
|
*
|
10179
|
-
* _.trunc('hi-diddly-ho there, neighborino', {
|
10332
|
+
* _.trunc('hi-diddly-ho there, neighborino', {
|
10333
|
+
* 'length': 24,
|
10334
|
+
* 'separator': /,? +/
|
10335
|
+
* });
|
10180
10336
|
* //=> 'hi-diddly-ho there...'
|
10181
10337
|
*
|
10182
|
-
* _.trunc('hi-diddly-ho there, neighborino', {
|
10338
|
+
* _.trunc('hi-diddly-ho there, neighborino', {
|
10339
|
+
* 'omission': ' [...]'
|
10340
|
+
* });
|
10183
10341
|
* // => 'hi-diddly-ho there, neig [...]'
|
10184
10342
|
*/
|
10185
10343
|
function trunc(string, options, guard) {
|
@@ -10307,9 +10465,16 @@
|
|
10307
10465
|
* elements = [];
|
10308
10466
|
* }
|
10309
10467
|
*/
|
10310
|
-
function attempt(
|
10468
|
+
function attempt() {
|
10469
|
+
var length = arguments.length,
|
10470
|
+
func = arguments[0];
|
10471
|
+
|
10311
10472
|
try {
|
10312
|
-
|
10473
|
+
var args = Array(length ? length - 1 : 0);
|
10474
|
+
while (--length > 0) {
|
10475
|
+
args[length - 1] = arguments[length];
|
10476
|
+
}
|
10477
|
+
return func.apply(undefined, args);
|
10313
10478
|
} catch(e) {
|
10314
10479
|
return isError(e) ? e : new Error(e);
|
10315
10480
|
}
|
@@ -10344,7 +10509,9 @@
|
|
10344
10509
|
* return callback(func, thisArg);
|
10345
10510
|
* }
|
10346
10511
|
* return function(object) {
|
10347
|
-
* return match[2] == 'gt'
|
10512
|
+
* return match[2] == 'gt'
|
10513
|
+
* ? object[match[1]] > match[3]
|
10514
|
+
* : object[match[1]] < match[3];
|
10348
10515
|
* };
|
10349
10516
|
* });
|
10350
10517
|
*
|
@@ -10372,6 +10539,7 @@
|
|
10372
10539
|
*
|
10373
10540
|
* var object = { 'user': 'fred' };
|
10374
10541
|
* var getter = _.constant(object);
|
10542
|
+
*
|
10375
10543
|
* getter() === object;
|
10376
10544
|
* // => true
|
10377
10545
|
*/
|
@@ -10392,6 +10560,7 @@
|
|
10392
10560
|
* @example
|
10393
10561
|
*
|
10394
10562
|
* var object = { 'user': 'fred' };
|
10563
|
+
*
|
10395
10564
|
* _.identity(object) === object;
|
10396
10565
|
* // => true
|
10397
10566
|
*/
|
@@ -10445,14 +10614,12 @@
|
|
10445
10614
|
* @example
|
10446
10615
|
*
|
10447
10616
|
* var users = [
|
10448
|
-
* { 'user': 'barney'
|
10449
|
-
* { 'user': 'fred'
|
10450
|
-
* { 'user': 'pebbles'
|
10617
|
+
* { 'user': 'barney' },
|
10618
|
+
* { 'user': 'fred' },
|
10619
|
+
* { 'user': 'pebbles' }
|
10451
10620
|
* ];
|
10452
10621
|
*
|
10453
|
-
*
|
10454
|
-
*
|
10455
|
-
* _.find(users, matchFred);
|
10622
|
+
* _.find(users, _.matchesProperty('user', 'fred'));
|
10456
10623
|
* // => { 'user': 'fred', 'age': 40 }
|
10457
10624
|
*/
|
10458
10625
|
function matchesProperty(key, value) {
|
@@ -10564,7 +10731,8 @@
|
|
10564
10731
|
}
|
10565
10732
|
|
10566
10733
|
/**
|
10567
|
-
* A no-operation function
|
10734
|
+
* A no-operation function which returns `undefined` regardless of the
|
10735
|
+
* arguments it receives.
|
10568
10736
|
*
|
10569
10737
|
* @static
|
10570
10738
|
* @memberOf _
|
@@ -10572,6 +10740,7 @@
|
|
10572
10740
|
* @example
|
10573
10741
|
*
|
10574
10742
|
* var object = { 'user': 'fred' };
|
10743
|
+
*
|
10575
10744
|
* _.noop(object) === undefined;
|
10576
10745
|
* // => true
|
10577
10746
|
*/
|
@@ -10617,11 +10786,11 @@
|
|
10617
10786
|
* @returns {Function} Returns the new function.
|
10618
10787
|
* @example
|
10619
10788
|
*
|
10620
|
-
* var object = { 'user': 'fred', 'age': 40, 'active': true };
|
10621
|
-
* _.map(['active', 'user'], _.propertyOf(object));
|
10622
|
-
* // => [true, 'fred']
|
10623
|
-
*
|
10624
10789
|
* var object = { 'a': 3, 'b': 1, 'c': 2 };
|
10790
|
+
*
|
10791
|
+
* _.map(['a', 'c'], _.propertyOf(object));
|
10792
|
+
* // => [3, 2]
|
10793
|
+
*
|
10625
10794
|
* _.sortBy(['a', 'b', 'c'], _.propertyOf(object));
|
10626
10795
|
* // => ['b', 'c', 'a']
|
10627
10796
|
*/
|
@@ -10633,8 +10802,9 @@
|
|
10633
10802
|
|
10634
10803
|
/**
|
10635
10804
|
* Creates an array of numbers (positive and/or negative) progressing from
|
10636
|
-
* `start` up to, but not including, `end`. If `
|
10637
|
-
*
|
10805
|
+
* `start` up to, but not including, `end`. If `end` is not specified it
|
10806
|
+
* defaults to `start` with `start` becoming `0`. If `start` is less than
|
10807
|
+
* `end` a zero-length range is created unless a negative `step` is specified.
|
10638
10808
|
*
|
10639
10809
|
* @static
|
10640
10810
|
* @memberOf _
|
@@ -10706,10 +10876,14 @@
|
|
10706
10876
|
* var diceRolls = _.times(3, _.partial(_.random, 1, 6, false));
|
10707
10877
|
* // => [3, 6, 4]
|
10708
10878
|
*
|
10709
|
-
* _.times(3, function(n) {
|
10879
|
+
* _.times(3, function(n) {
|
10880
|
+
* mage.castSpell(n);
|
10881
|
+
* });
|
10710
10882
|
* // => invokes `mage.castSpell(n)` three times with `n` of `0`, `1`, and `2` respectively
|
10711
10883
|
*
|
10712
|
-
* _.times(3, function(n) {
|
10884
|
+
* _.times(3, function(n) {
|
10885
|
+
* this.cast(n);
|
10886
|
+
* }, mage);
|
10713
10887
|
* // => also invokes `mage.castSpell(n)` three times
|
10714
10888
|
*/
|
10715
10889
|
function times(n, iteratee, thisArg) {
|
@@ -10757,11 +10931,13 @@
|
|
10757
10931
|
|
10758
10932
|
/*------------------------------------------------------------------------*/
|
10759
10933
|
|
10760
|
-
// Ensure
|
10761
|
-
|
10934
|
+
// Ensure wrappers are instances of `baseLodash`.
|
10935
|
+
lodash.prototype = baseLodash.prototype;
|
10936
|
+
|
10937
|
+
LodashWrapper.prototype = baseCreate(baseLodash.prototype);
|
10938
|
+
LodashWrapper.prototype.constructor = LodashWrapper;
|
10762
10939
|
|
10763
|
-
|
10764
|
-
LazyWrapper.prototype = baseCreate(LodashWrapper.prototype);
|
10940
|
+
LazyWrapper.prototype = baseCreate(baseLodash.prototype);
|
10765
10941
|
LazyWrapper.prototype.constructor = LazyWrapper;
|
10766
10942
|
|
10767
10943
|
// Add functions to the `Map` cache.
|
@@ -10919,6 +11095,7 @@
|
|
10919
11095
|
lodash.identity = identity;
|
10920
11096
|
lodash.includes = includes;
|
10921
11097
|
lodash.indexOf = indexOf;
|
11098
|
+
lodash.inRange = inRange;
|
10922
11099
|
lodash.isArguments = isArguments;
|
10923
11100
|
lodash.isArray = isArray;
|
10924
11101
|
lodash.isBoolean = isBoolean;
|
@@ -11101,18 +11278,18 @@
|
|
11101
11278
|
return this.filter(identity);
|
11102
11279
|
};
|
11103
11280
|
|
11104
|
-
LazyWrapper.prototype.dropWhile = function(
|
11281
|
+
LazyWrapper.prototype.dropWhile = function(predicate, thisArg) {
|
11105
11282
|
var done;
|
11106
|
-
|
11283
|
+
predicate = getCallback(predicate, thisArg, 3);
|
11107
11284
|
return this.filter(function(value, index, array) {
|
11108
|
-
return done || (done = !
|
11285
|
+
return done || (done = !predicate(value, index, array));
|
11109
11286
|
});
|
11110
11287
|
};
|
11111
11288
|
|
11112
|
-
LazyWrapper.prototype.reject = function(
|
11113
|
-
|
11289
|
+
LazyWrapper.prototype.reject = function(predicate, thisArg) {
|
11290
|
+
predicate = getCallback(predicate, thisArg, 3);
|
11114
11291
|
return this.filter(function(value, index, array) {
|
11115
|
-
return !
|
11292
|
+
return !predicate(value, index, array);
|
11116
11293
|
});
|
11117
11294
|
};
|
11118
11295
|
|
@@ -11190,7 +11367,7 @@
|
|
11190
11367
|
LazyWrapper.prototype.reverse = lazyReverse;
|
11191
11368
|
LazyWrapper.prototype.value = lazyValue;
|
11192
11369
|
|
11193
|
-
// Add chaining functions to the lodash wrapper.
|
11370
|
+
// Add chaining functions to the `lodash` wrapper.
|
11194
11371
|
lodash.prototype.chain = wrapperChain;
|
11195
11372
|
lodash.prototype.commit = wrapperCommit;
|
11196
11373
|
lodash.prototype.plant = wrapperPlant;
|
@@ -11198,7 +11375,7 @@
|
|
11198
11375
|
lodash.prototype.toString = wrapperToString;
|
11199
11376
|
lodash.prototype.run = lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
|
11200
11377
|
|
11201
|
-
// Add function aliases to the lodash wrapper.
|
11378
|
+
// Add function aliases to the `lodash` wrapper.
|
11202
11379
|
lodash.prototype.collect = lodash.prototype.map;
|
11203
11380
|
lodash.prototype.head = lodash.prototype.first;
|
11204
11381
|
lodash.prototype.select = lodash.prototype.filter;
|