如何将制表符分隔的CSV字符串转为无表头的JavaScript对象数组?
解决制表符分隔CSV转JavaScript对象数组的问题
可以通过以下步骤实现将制表符分隔的CSV字符串转换为不含表头的对象数组:
- 分割CSV字符串为行:按换行符拆分字符串,过滤掉空行避免无效数据。
- 提取并处理表头:取第一行作为表头,按制表符拆分后去掉每个字段的前后引号。
- 处理数据行:遍历剩余行,每行按制表符拆分后清理字段的引号,再与表头对应生成对象。
实现代码
function parseTabSeparatedCSV(csvString) { // 分割行并过滤空行 const lines = csvString.split('\n').filter(line => line.trim() !== ''); if (lines.length === 0) return []; // 处理表头:去掉引号,得到键名数组 const headers = lines[0].split('\t').map(header => header.replace(/^"|"$/g, '')); // 处理数据行,生成对象数组 const result = []; for (let i = 1; i < lines.length; i++) { const fields = lines[i].split('\t').map(field => field.replace(/^"|"$/g, '')); const rowObj = {}; headers.forEach((header, index) => { rowObj[header] = fields[index] || ''; }); result.push(rowObj); } return result; } // 测试示例 const csvStr = `"Name" "Address" "Central" "Unfiltered" "Description" "DatapointType" "Security" "Placeholder1" "0/0/-" "" "" "" "" "Auto" "Placeholder2" "0/-/-" "" "" "" "" "Auto" "Placeholder3" "0/0/1" "" "" "" "DPT-1" "Auto" "Placeholder4" "0/0/2" "" "" "" "DPT-3" "Auto"`; const dataArray = parseTabSeparatedCSV(csvStr); console.log(dataArray);
代码说明
split('\n')将CSV按行拆分,filter清理空行避免解析错误。split('\t')按制表符拆分每行的字段,适配你的制表符分隔格式。replace(/^"|"$/g, '')移除字段前后的双引号,还原真实字段值。- 遍历数据行时,将每个字段与表头键名一一对应,生成结构化的对象。
内容的提问来源于stack exchange,提问作者David Küng
相关产品推荐
相关产品推荐

