gpt4 book ai didi

javascript - 如何从类似数组的对象获取字符串路径

转载 作者:行者123 更新时间:2023-12-02 23:01:56 25 4
gpt4 key购买 nike

我正在尝试从类似数组的对象构建字符串路径。但我的解决方案并不好

// in cay thu muc
var test = [
{
name: "home",
children: [
{
name: "dev",
children: [
{
name: "ahihi.txt"
},
{
name: "hhh.js"
}
]
}
]
},
{
name: "www",
children: [
{
name: "fol1",
children: [
{
name: "fdsafd"
}
]
},
{
name: "fol3",
children: []
}
]
},
{
name: "fol2",
children: []
}
];

function printChild(items, tabNum) {
let indent = `${" ".repeat(tabNum)}`;
let child = "";

[...items].forEach(item => {
if (!item.hasOwnProperty("children")) {
child += `${indent + item.name}\n`;
} else if (item.children.length === 0) {
child += `${indent + item.name}\\\n`;
} else {
child += `${indent +
item.name +
"\\\n" +
printChild(item.children, tabNum + 1)}`;
}
});

return child;
}

function tree(test) {
let res = `\\\n${printChild(test, 1)}`;
return res;
}

console.log(tree(test));

这里是repl链接:https://repl.it/repls/CrispRashHack

理想情况下,这应该导致类似的结果;

  home\
dev\
ahihi.txt
hhh.js
www\
fol1\
fdsafd
fol3\
fol2\

最佳答案

您可以使用flatMap来获取要连接的字符串数组。然后使用join创建最终的字符串

var test=[{name:"home",children:[{name:"dev",children:[{name:"ahihi.txt"},{name:"hhh.js"}]}]},{name:"www",children:[{name:"fol1",children:[{name:"fdsafd"}]},{name:"fol3",children:[]}]},{name:"fol2",children:[]}];

function stringify(arr, index = 0) {
const prefix = ' '.repeat(index);

return arr.flatMap(o =>
o.children
? [`${prefix}${o.name}\\\n`, ...stringify(o.children, index + 1)]
: `${prefix}${o.name}\n`
)
}

console.log(stringify(test).join(''))

关于javascript - 如何从类似数组的对象获取字符串路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57744738/

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