【发布时间】:2022-01-01 10:32:18
【问题描述】:
我将一个 XML 数据解析成一个 JS obj,导致所有父标签变成一个数组。我尝试将其展平,但我似乎无法将头绕在递归部分上。
这是嵌套对象的示例:
nestedObj: [
{
foo1:[ "A" ],
foo2: [
{
bar1: [ "B" ],
bar2: [ "C" ]
}
],
foo3: [ "D" ]
.
.
.
}
]
expectedData: {
foo1: "A" ,
foo2:
{
bar1: "B",
bar2: "C"
}
,
foo3: "D"
.
.
.
}
这是我对代码的尝试:
function flattenArrToObj(arr) {
for(let key in arr) {
let val = arr[key];
if(Array.isArray(val)) {
arr[key] = val[0];
} else {
flattenArrToObj(val);
}
}
return arr[0];
}
它在 bar1 和 bar2 等内部数据上运行良好,但如您所见,我仍然必须返回 arr[0] 才能完成我最初想要的 - 这与递归的努力有些矛盾。对此有什么想法吗?
【问题讨论】:
-
外部数组中只有一个对象吗?
标签: javascript node.js arrays object nested-lists