UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

67 lines (64 loc) 1.73 kB
import { a as __spreadArray } from '../tslib.es6-096fffdd.js'; /** * 生成 CSV 文件内容,可以用于 fs.writeFileSync 输出 * * 第一行为表头 * @param {Array<Array<string>>} dataList 二维数据列表 * @returns 生成的字符串 * @example * * ```ts * generateCSV([['a','b'], ['1', '2']]); * ``` */ function generateCSV(dataList) { var result = []; if (!(dataList === null || dataList === void 0 ? void 0 : dataList[0].length)) { return ''; } dataList.forEach(function (line, lineIndex) { line.forEach(function (text, index) { if (lineIndex === 0 && index === 0) { result.push("\uFEFF".concat(text, ",")); } else if (index === line.length - 1) { result.push("".concat(text, "\n")); } else { result.push("".concat(text, ",")); } }); }); return result.join(''); } /** * 生成 CSV 所需数据,可用于传递给 generateCSV 方法 * * @param {Array<Record<string, string | number | boolean>>} list 数据列表 * @param {Record<string, string>} headMap 数据项的 key 和表头标题的映射关系 * @returns 二维数组,第一行是表头 * * @example * ```ts * generateCSVData([ * { * file: 'a.js', * size: 88, * }, * { * file: 'b.js', * size: 66, * } * ], { file: '文件名称', size: '文件大小' }) * * * // [['文件名称', '文件大小'], ['a.js', 88], ['b.js', 66]] * ``` */ function generateCSVData(list, headMap) { var dataList = list.map(function (item) { return Object.keys(headMap).map(function (key) { return item[key]; }); }); return __spreadArray([Object.values(headMap)], dataList, true); } export { generateCSV, generateCSVData };