gpt4 book ai didi

javascript - 将字符串数组转换为自定义结构

转载 作者:行者123 更新时间:2023-12-01 02:43:09 24 4
gpt4 key购买 nike

我需要将这个字符串数组转换成一个特殊的结构 https://github.com/jonmiles/bootstrap-treeview

这是我的输入字符串数组:

******************
"productone"
"productone\level2\level3"
"productwo"
"productwo\level2\level3\level4"
"productwo\level2\level3.1\level4\level5"
"productwo\level2\level3.2\level4\level5"

so can you imagine this:

"memory"
"memory\ram"
"memory\ram\ddr\sodimm\533mhz\4gb"
"memory\ram\ddr\sodimm\533mhz\8gb"
"memory\ram\ddr\sodimm\533mhz\16gb"
"memory\ram\ddr\sodimm2\633mh\4gb
"memory\ram\ddr\sodimm2\633mh\16gb
"memory\disk"
and so on....
*******************

我需要这个输出(注意返回正确的顺序输出):

var jsondata = [
{
"text": "productone",
"nodes":[ {"text": "level2",
"nodes":[{"text": "level3"}]
}]
},
{
"text": "productwo",
"nodes":[{"text": "level2"},
"nodes":[{"text": "level3",
"nodes":[{text:level4}]
}]
}]
}
}]

有什么建议吗?

最佳答案

我扔掉了之前的答案,用这个答案代替。

这应该完全符合您的要求。

var src = [
"productone",
"productone\\level2\\level3",
"productwo\\level2\\level3\\level4",
"productone\\level2\\dog",
"productone\\level2\\dog\\bark",
"productwo\\level2\\level3a\\level4a",
"productwo\\level2\\level3\\level4\\level5",
"productwo\\food\\desserts\\cookies",
"productwo\\food\\desserts\\cakes",
"productwo\\food\\desserts\\pies",
"productone\\level2\\cat",
"productone\\level2\\cat\\meow"
]

function tempToObj(temp) {
var result = [];
Object.keys(temp).forEach(
function(key) {
var obj = {
text: key
};

var nodes = tempToObj(temp[key]);
if (nodes.length > 0) {
obj.nodes = nodes;
}

result.push(obj);
}
);

return result;
}

function strsToObj(strList) {
var result = [];
var tempResult = {};

function buildNode(parts, idx, obj) {
var key = parts[idx];

obj[key] = obj[key] || {};

idx++;
if (idx < parts.length) {
buildNode(parts, idx, obj[key]);
}
}

strList.forEach(
function(str) {
var parts = str.split('\\');
buildNode(parts, 0, tempResult);
}
);

return tempToObj(tempResult);
}

var obj = strsToObj(src);
console.log(JSON.stringify(obj,0,2));

我发现构建对象结构然后将其转换为您想要的格式要容易得多。这简化了解析算法,但又防止每次都重建所有内容。

上面代码的结果是这样的:

[
{
"text": "productone",
"nodes": [
{
"text": "level2",
"nodes": [
{
"text": "level3"
},
{
"text": "dog",
"nodes": [
{
"text": "bark"
}
]
},
{
"text": "cat",
"nodes": [
{
"text": "meow"
}
]
}
]
}
]
},
{
"text": "productwo",
"nodes": [
{
"text": "level2",
"nodes": [
{
"text": "level3",
"nodes": [
{
"text": "level4",
"nodes": [
{
"text": "level5"
}
]
}
]
},
{
"text": "level3a",
"nodes": [
{
"text": "level4a"
}
]
}
]
},
{
"text": "food",
"nodes": [
{
"text": "desserts",
"nodes": [
{
"text": "cookies"
},
{
"text": "cakes"
},
{
"text": "pies"
}
]
}
]
}
]
}
]

关于javascript - 将字符串数组转换为自定义结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47419133/

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