gpt4 book ai didi

javascript - 需要帮助生成将 json 对象转换为特定结构的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:59 25 4
gpt4 key购买 nike

像这样考虑 json 对象

var data = {
keyA: [ {keyA0: [keyA00]} ],
keyB: [ {keyB0: [keyB00]} ]
}

从视觉上看是这样

-keyA
- keyA0
- keyA00
-keyB
- keyB0
- keyB00

需要把它转换成这样的东西

var convertedData = {
name: root
children:[
{name:keyA, children: [ {name: keyA0 : children: [{name:keyA0, children: []}]} ]},
{name:keyB, children: [...]}
]
}

“...”是递归结构,直到它遇到子节点为空数组的叶节点。

最佳答案

解决了它,也许它会对其他有类似问题的人有用。这是 js fiddle ,http://jsfiddle.net/tF3uH/20/ ,并进一步引用代码

var data = {
"KeyA": ["KeyA0", "KeyA1"],
"KeyB": [{"KeyB0": ["KeyB00", "KeyB01"]}]
};
/* EXPECTED OUTPUT
[
{name: KeyA: children:[{name:KeyA0, children:[]},
{name:keyA1, children:[]}
]
},
{name: KeyB: children:[{name:KeyB0, children: [{name:KeyB00, children: []},
{name:KeyB01, children: []}
]
}
]
}
]
*/
function _doConversion(jsonData, treeList) {
if (typeof jsonData == typeof Object()) {
$.each(jsonData, function(key, val) {
var isArray = Array.isArray(val);
var name = key;
var children = [];
if (isArray) {
$.each(val, function(i, item) {
_doConversion(item, children);
});
}else{ //not array but object
_doConversion(val,children);
}
treeList.push({
name : name ,
children: children
});
});
} else { //a leaf (could be string,number,boolean...)
var node = {
name: jsonData,
children: []
};
treeList.push(node);
}
}

var list = [];
_doConversion(data, list);
$("body").text(JSON.stringify(list, null, "\n"));​

关于javascript - 需要帮助生成将 json 对象转换为特定结构的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13354368/

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