如何用纯JS将CSV字符串转换为可按键名引用的对象结构
实现方案
直接对CSVToArray返回的二维数组做聚合转换即可,代码如下:
// 原有CSV转二维数组方法保留 const CSVToArray = (data, delimiter = ",", omitFirstRow = false) => data.slice(omitFirstRow ? data.indexOf("\n") + 1 : 0).split("\n").map(v => v.split(delimiter)); // 新增CSV转键值对象方法 const CSVToKeyedObject = (csvStr, delimiter = ",", omitFirstRow = false) => { const rowList = CSVToArray(csvStr, delimiter, omitFirstRow); // 以每行首元素为键,整行内容为值生成对象 return rowList.reduce((acc, curRow) => { // 过滤空行避免异常 if (curRow?.length) acc[curRow[0]] = curRow; return acc; }, {}); } // 测试调用 const testCsv = "col1,col2\na,b\nc,d"; const Obj = CSVToKeyedObject(testCsv, ",", true); // 验证输出 console.log(Obj.a); // 返回 ["a","b"] console.log(Obj.c); // 返回 ["c","d"]
如果不需要额外封装方法,也可以直接用一行代码完成转换:
const Obj = CSVToArray("col1,col2\na,b\nc,d", ",", true).reduce((acc, cur) => (acc[cur[0]] = cur, acc), {});
内容的提问来源于stack exchange,提问作者user3768564
相关产品推荐
相关产品推荐

