首页 > 解决方案 > 无法将复杂对象数组正确转换为 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}]
        },
    ];

现在这是输出:

在此处输入图像描述

标签: javascripttypescriptcsv

解决方案


[ 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
}

当然,您的需求可能会决定其他转换,因此请根据需要进行调整。


推荐阅读