doublescore
Version:
Utility functions for managing data structures and measurement.
72 lines • 2.16 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
var clone_1 = __importDefault(require("./clone"));
var types = __importStar(require("./types"));
function iterate() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
if (args.length < 2) {
return;
}
var indexStack = [];
var iterator = args[args.length - 1];
var eachArr = function (arr) {
arr.forEach(function (value, index) {
each(value, index);
});
};
var eachObj = function (obj) {
for (var index in obj) {
if (obj.hasOwnProperty(index)) {
each(obj[index], index);
}
}
};
var each = function (value, index) {
indexStack.push(index);
if (types.isArray(value)) {
eachArr(value);
}
else if (types.isObject(value)) {
eachObj(value);
}
else {
iterator(value, clone_1.default(indexStack));
}
indexStack.pop();
};
for (var i = 0; i < args.length - 1; i++) {
var arg = args[i];
each(arg, i);
}
}
(function (iterate) {
function flatten() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var output = [];
// add a callback to the args of inputs to handle all the iterations
args.push(function (value) {
output.push(value);
});
iterate.apply(module.exports, args);
return output;
}
iterate.flatten = flatten;
})(iterate || (iterate = {}));
exports.default = iterate;
//# sourceMappingURL=iterate.js.map