1 | "use strict";
|
2 | var optimizeCb = function (func, context, argCount) {
|
3 | if (context === void 0)
|
4 | return func;
|
5 | switch (argCount) {
|
6 | case 1: return function (value) {
|
7 | return func.call(context, value);
|
8 | };
|
9 | }
|
10 | return function () {
|
11 | var args = [];
|
12 | for (var _i = 0; _i < arguments.length; _i++) {
|
13 | args[_i] = arguments[_i];
|
14 | }
|
15 | return func.apply(context, args);
|
16 | };
|
17 | };
|
18 | var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;
|
19 | var each = function (obj, iteratee, context) {
|
20 | iteratee = optimizeCb(iteratee, context);
|
21 | var i, length;
|
22 | if (isArrayLike(obj)) {
|
23 | for (i = 0, length = obj.length; i < length; i++) {
|
24 | iteratee(obj[i], i, obj);
|
25 | }
|
26 | }
|
27 | else {
|
28 | var keys = Object.keys(obj);
|
29 | for (i = 0, length = keys.length; i < length; i++) {
|
30 | iteratee(obj[keys[i]], keys[i], obj);
|
31 | }
|
32 | }
|
33 | return this;
|
34 | };
|
35 | var isArrayLike = function (collection) {
|
36 | var length = collection === null ? void 0 : collection['length'];
|
37 | return typeof length === 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;
|
38 | };
|
39 | module.exports = each;
|
40 |
|
\ | No newline at end of file |