NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/data-set/lib/basic-transform/flatten.js
2023-09-14 14:47:11 +08:00

48 lines
1.5 KiB
Java

"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;