javascript - 无法将复杂对象数组正确转换为 CSV
问题描述
我有一个复杂对象数组,其中可能包含更多对象的数组。我想将这些转换为 CSV 文件。只要有对象列表,数据就会被解析为[object Object]
. 例如,如果一个人有两封电子邮件,我想将这些电子邮件打印成两行,以此类推。地址可以连接到一个字符串,例如“France, Paris, someStreet 15”。
代码就在这支笔里。
这是数据:
var names = [
{
Name: [{First: "Peter", Last:"john"}],
WorkPlace: [{Company: "Intel", emails: ["jack@intell.com","admin@intell.com"]}],
Age: 33.45,
Adress: [{Country:"UK", city: "London", street:"Oak", strtNumber:16},
{Country:"Italy", city: "MIlan", street:"Zabin", strtNumber:2}]
},
{
Name: [{First: "jack", Last:"Smith"}],
WorkPlace: [{Company: "Intel", emails: ["jack@intell.com","admin@intell.com"]}],
Age: 30,
Adress: [{Country:"Portugal", city: "Lisbon", street:"crap", strtNumber:144},
{Country:"Greece", city: "Athenes", street:"Hercules", strtNumber:55}]
},
{
Name: [{First: "jon", Last:"snow"}],
WorkPlace: [{Company: "Intel", emails: ["jack@intell.com","admin@intell.com"]}],
Age: 50,
Adress: [{Country:"Middle earth", city: "Winterfell", street:"raven", strtNumber:4345},
{Country:"Narnia", city: "Jacksonvile", street:"Great crap", strNumber:34}]
},
];
现在这是输出:
解决方案
[ object Object]表示数据需要进一步转换才能获得所需的输出。
这是一个带有示例转换的更新CodePen 。
提供的转换例程使用Object.values()来转换所有数据:
function parseArrayOfObjects(arrayOfObj){
return arrayOfObj.map(item =>
Object.values(item).join(" ")) // convert each array item to it's values
.join(" ") // convert final array to string
.replace(",", " "); // remove any commas to preserve csv format
}
当然,您的需求可能会决定其他转换,因此请根据需要进行调整。
推荐阅读
- f# - 如何在 f# 中进行非标准字符串替换?
- c# - 自定义 LinqToHqlGeneratorsRegistry - InvalidCastException:'无法将“Antlr.Runtime.Tree.CommonTree”转换为“NHibernate.Hql.Ast.ANTLR.Tree.IASTNode”
- spring-data-jpa - spring data JPA optional.orelse 无法正常工作
- matlab - 如何确定向量是否包含 MATLAB 中的日期?
- reporting - Eclipse BIRT 设计器
- python - 如何在 gspread 中动态更新/插入谷歌表格的行和列?
- python - 如何从 Jupyter 笔记本将字符串传递给 IPython 中的 boto3 函数?
- excel - Excel VBA IUIAutomation:如何在 IE11 中另存为(而不是“保存”和“打开”)或如果添加后续代码确保 Excel 文件打开?
- sms - 我无法在传递状态消息中获取收件人的号码
- python - 为什么 BeautifulSoup 会从该网页中丢失如此多的内容?