[英]convert nested object in parent / children structure js
我嘗試轉換此結構(每個孩子都是對象中的屬性):
const tree = { "Parent 1": { "Children1": { "Children2": { "#1": { info: {}}, "#2": { info: {}}. "#3": { info: {}} }, "Children1-1": { "Children2-2": { "#1": { info: {}}, "#2": { info: {}}. "#3": { info: {}} } }, "Parent 2": {... } };
在這個帶有父子視圖的樹結構中。 但在我的樹的盡頭,我不需要孩子
const resultTeee = [ { name: 'Parent 1', children: [ { name: 'Children 1', children: [ { name: 'Children 2', children: [ {name: "#1", info: {}}, {name: "#2", info: {}} ] } ] }, { name: 'Children 1-1', children: [ { name: 'Children 2-2', children: [ {name: "#1", info: {}}, {name: "#2", info: {}} ] } ] } ] }, { name: 'Parent 2'.... } ]
我嘗試“遍歷樹”方法,但不明白如何切換到新的子路徑。 Object 在每一層上可以有多個嵌套結構。
const toArrayTree = (obj) => {
return Object.keys(obj).map(key => {
return {name: key, children: [toArrayTree(obj[key])]}
})
}
object 用於測試
const tree = {
"Parent 1" : {
"Children1": {
"Children2": {
"#1": { info: {}},
"#2": { info: {}},
"#3": { info: {}},
}
},
},
"Parent 2" : {
"Children2.1": {
"Children2.2": {
"#4": { info: {}},
"#5": { info: {}},
"#6": { info: {}},
}
},
},
};
但正如@adiga 所說,為什么樹的最后一個分支不是{ name: 'info', children: [] }
?
const toArrayTree = (obj) => {
return Object.keys(obj).map(key => {
return typeof obj[key] === 'object' ?
{name: key, children: [toArrayTree(obj[key])]} :
{name: key, [key]: obj[key]};
})
}
使用Object(v) === v
確實是個壞主意,因為例如 v 是 function
您可以map
的entries
。 如果值為 object,則遞歸調用 function。
const tree = {"Parent 1":{Children11:{Children111:{"#1":{info:{}},"#2":{info:{}},"#3":{info:{}}}}},"Parent 2":{Children21:{Children211:{"#1":{info:{}},"#2":{info:{}},"#3":{info:{}}}}}}; function trasnform(o) { return Object.entries(o).map(([name, v]) => Object(v) === v? { name, children: trasnform(v) }: { name, value: v } // unclear from the question ) } console.log(trasnform(tree))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.