如何将对象数组转换为CSV格式对应的字符串数组
JavaScript对象数组转CSV格式字符串数组实现
基础实现(适用于字段值无特殊字符的场景)
直接通过取对象键生成表头、遍历取值拼接行即可,刚好适配你给出的示例场景:
function convertToCSVArr(objArr) { // 取第一个对象的键拼接为CSV表头行 const header = Object.keys(objArr[0]).join(','); // 遍历每个对象,取出所有值拼接为数据行 const dataRows = objArr.map(item => Object.values(item).join(',')); // 合并表头和数据行返回最终数组 return [header, ...dataRows]; } // 调用示例 const arrayObject = [ { Name: "Alex", Age: 16, Address: "Miami", }, { Name: "James", Age: 36, Address: "LA", }, { Name: "Mark", Age: 25, Address: "San Diego", }, ]; const result = convertToCSVArr(arrayObject); console.log(result); // 输出结果和你期望的完全一致:['Name,Age,Address', 'Alex,16,Miami', 'James,36,LA', 'Mark,25,San Diego']
兼容特殊字符的优化实现
如果你的字段值中包含逗号、双引号、换行这类CSV特殊字符,建议使用下方优化版本,避免出现列错位问题:
function convertToCSVArr(objArr) { // 格式化字段值,处理特殊字符 const formatField = (val) => { const str = String(val); // 存在特殊字符时用双引号包裹,内容中的双引号转义为两个双引号 if (/[,"\n]/.test(str)) { return `"${str.replace(/"/g, '""')}"`; } return str; }; const header = Object.keys(objArr[0]).map(formatField).join(','); const dataRows = objArr.map(item => Object.values(item).map(formatField).join(',')); return [header, ...dataRows]; }
内容的提问来源于stack exchange,提问作者bankzAladin
相关产品推荐
相关产品推荐

