gpt4 book ai didi

javascript - 如何在 JavaScript 中将选项卡式树转换为 JSON?

转载 作者:数据小太阳 更新时间:2023-10-29 04:18:19 25 4
gpt4 key购买 nike

我四处寻找答案,但我认为这是一个奇怪的问题。我将如何将其转换为使用制表符间距的文本文件:

parent
child
child
parent
child
grandchild
grandhcild

{
"name" : "parent",
"children" : [
{"name" : "child"},
{"name" : "child"},
]
},
{
"name" : "parent",
"children" : [
{
"name" : "child",
"children" : [
{"name" : "grandchild"},
{"name" : "grandchild"},
{"name" : "grandchild"},
]
},
]
}

JSON 可能并不完美,但希望能阐明我的观点。

最佳答案

我遇到了同样的问题。这是解决方案:

function node(title,lvl){
var children = [],
parent = null;
return {
title:title,
children:children,
lvl:()=>lvl==undefined?-1:lvl,
parent:()=>parent, //as a function to prevent circular reference when parse to JSON
setParent:p=>{parent=p},
appendChildren: function(c){
children.push(c);
c.setParent(this);
return this
},
}
}
function append_rec(prev,curr) {
if(typeof(curr)=='string'){ //in the recursive call it's a object
curr = curr.split(' ');//or tab (\t)
curr = node(curr.pop(),curr.length);
}
if(curr.lvl()>prev.lvl()){//curr is prev's child
prev.appendChildren(curr);
}else if(curr.lvl()<prev.lvl()){
append_rec(prev.parent(),curr) //recursive call to find the right parent level
}else{//curr is prev's sibling
prev.parent().appendChildren(curr);
}

return curr;
}

root = node('root');

var txt =
`parent
child
child
parent
child
grandchild
grandhcild`;

txt.toString().split('\n').reduce(append_rec,root);

console.log(JSON.stringify(root.children,null,3));

关于javascript - 如何在 JavaScript 中将选项卡式树转换为 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21031651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com