"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); function omit(row, fields) { var data = tslib_1.__assign({}, row); fields.forEach(function (field) { delete data[field]; }); return data; } /** * 展开数组字段 * @param rows - 数据 * @param options - 配置 */ function flatten(rows, options) { var fields = options.fields, _a = options.as, as = _a === void 0 ? [] : _a, index = options.index; var targets = rows.map(function (row) { return fields.map(function (field) { return row[field]; }); }); // [ // [[1,2,3], [2,3,4]] // ] var newRows = rows.map(function (row) { return omit(row, fields); }); var keys = fields.map(function (item, index) { return as[index] || item; }); var result = []; var idx = 1; targets.forEach(function (items, rowIndex) { // [[1,2,3], [2,3,4]] var max = Math.max.apply(Math, tslib_1.__spread(items.map(function (item) { return item.length; }))); var _loop_1 = function (i) { var row = tslib_1.__assign({}, newRows[rowIndex]); keys.forEach(function (key, j) { var item = items[j]; var length = item.length; row[key] = i >= length ? null : item[i]; if (index) row[index] = idx + i; }); result.push(row); }; for (var i = 0; i < max; i++) { _loop_1(i); } idx += max; }); return result; } exports.flatten = flatten;