Javascript 将对象树存储到csv/xlsx

Javascript 将对象树存储到csv/xlsx,javascript,arrays,node.js,Javascript,Arrays,Node.js,我有一个像这样的物体: { "Group1": { "Category1": "Value1 | Value2 | Value3", "Category2": "Value1 | Value2 | Value3" }, "Group2": { "Category3": "Value1 | Value2 | Value3", "Category4": "Value1 | Value2 | Value3"

我有一个像这样的物体:

{
    "Group1": {
        "Category1": "Value1 | Value2 | Value3",
        "Category2": "Value1 | Value2 | Value3"
    },
    "Group2": {
        "Category3": "Value1 | Value2 | Value3",
        "Category4": "Value1 | Value2 | Value3"
    }
} 
我想要得到的应该是这样的:

不管是CSV还是XLSX,我尝试使用npm的一些包来转换json->CSV/XLSX,得到了一些结果,但不是我想要的结果

到目前为止,我唯一的想法是在我的第二个sreenshot上获得一个数组,然后使用npm的一些特殊包将其转换为CSV:

但也许有更简单的解决方案?
任何帮助都将不胜感激!和平

您可以采取一种方法,将对象更改为具有空键的对象,并在结果集中用空格映射所有嵌套属性

基本上,它获取对象的条目并查找其他对象,如果是,则再次调用函数或获取结果集中新行的键和值

每个递归结果集在行中填充一个空格,对于所有嵌套属性,都会得到相应的缩进

函数getCSV(对象){ 返回Object.entries(Object).reduce((r[k,v])=>{ if(v&&typeof v=='object'){ 如果(k)r.push([k]); r、 push(…getCSV(v).map(a=>['',a]); }否则{ r、 推力([k,v]); } 返回r; }, []); } var数据={Group1:{Category1:{Value1 | Value2 | Value3},Category2:{Category3:{Category3:{Value1 | Value2 | Value3},Category4:“Value1 | Value2 | Value3}, 结果=getCSV({'':data}); 控制台日志(结果)
。作为控制台包装{max height:100%!important;top:0;}
请将想要的结果,至少是最后一个文本形式的结果添加到问题中。顺便说一句,你尝试过什么?想要的结果是.csv或.xlsx文件,就像第一个屏幕截图一样。好的,我会在几分钟后将我尝试过的添加到帖子中,或者你能给我一个提示,如何从该对象获取第二个屏幕截图上的数组吗?我试着去做,但太复杂了,根本不知道该怎么做it@DennisCasteel欢迎来到SO!通常,对于这些问题,您应该提供您已经尝试实现所需目标的代码result@acupajoe好的,给我一些时间,你能给你的代码添加一些注释吗?我的意思是我对你的代码很好奇。。例如,函数参数“length=0”。这对我来说似乎有些陌生,我以前从未见过这样的函数参数。或者你可以告诉我我应该读些什么(一些JS教程章节)来理解你的每一个代码字符串