【发布时间】:2018-01-30 01:49:57
【问题描述】:
我一直在尝试根据我在这里得到的帮助创建一个递归函数:looping through an object (tree) recursively
我想遍历对象 o 并创建一个新对象,该对象以每个键为键,并且对它上面的所有内容都具有父母的价值。
我的大脑不擅长递归,试试看 :-) .. 如果你想尝试使用真实数据,它是 here
function eachRecursive(obj) {
for (var k in obj) {
if (typeof obj[k] == "object" && obj[k] !== null ) {
eachRecursive(obj[k])
}
else {
// do something to add to codes
}
}
}
var o = {
"1": {
name: "hi 1",
children: {
"1.1": {
name: "hi 1.1",
children: {
"1.1.1": {
name: "hi 1.1.1",
children: {}
}
}
},
"1.2": {
name: "hi 1.2",
children: {}
}
}
},
"2": {
name: "hi 2",
children: {
"2.1": {
name: "hi 2.1",
children: {}
}
}
}
}
var codes = {}
eachRecursive(o)
console.log(codes)
// What I wish to have.
//{
// "1": {
// "name":"hi 1",
// "parents":[]
// },
// "2": {
// "name": "hi 2",
// "parents": []
// },
// "1.1": {
// "name": "hi 1.1",
// "parents": ["1"]
// },
// "1.1.1": {
// "name": "hi 1.1.1",
// "parents": ["1", "1.1"]
// },
// "1.2": {
// "name": "hi 1.2",
// "parents": ["1"]
// },
// "2.1": {
// "name": "hi 2.1",
// "parents": ["2"]
// }
//}
【问题讨论】:
-
您可能想要使用映射函数并返回每个项目的值
-
将再试一次 - 问题是
parents部分,这使得递归解决方案更加烦人。如果我不回到这个 - 你可能想看看这个库 - github.com/paularmstrong/normalizr
标签: javascript json recursion