Javascript 通过解析具有字符串问题的对象以树状结构显示

Javascript 通过解析具有字符串问题的对象以树状结构显示,javascript,Javascript,我想解析一个对象并以树状结构打印。我在处理(私人飞机和船舶)方面有问题。我想在递归函数中实现它 对象: [{"land":[{"vehicles":["car","bus","train"]}]},{"air":[{"commercial":[{"flight":["local","international"]},"privateJet"]},"ship"]}] <!doctype html> <html> <body> <div id="abc"&

我想解析一个对象并以树状结构打印。我在处理(私人飞机和船舶)方面有问题。我想在递归函数中实现它

对象:

[{"land":[{"vehicles":["car","bus","train"]}]},{"air":[{"commercial":[{"flight":["local","international"]},"privateJet"]},"ship"]}]
<!doctype html>
<html>
<body>
<div id="abc"></div>

<script>
var treeObj = [{"land":[{"vehicles":["car","bus","train"]}]},{"air":[{"commercial":[{"flight":["local","international"]},"privateJet"]},"ship"]}]

function createTree(obj, parent) {
    for(key in obj) {
        if(typeof obj[key] == 'string') {
            document.getElementById('abc').innerHTML += '<div style="padding-left:10em">' + obj[key] + '</div>';
        } else {
            console.log(key, obj);
            x = 1;
            for(categoryKey in obj[key]) {

                var category = obj[key];
                if(Object.prototype.toString.call( category[categoryKey] ) === '[object Array]') {
                    document.getElementById('abc').innerHTML += '<div style="padding-left:'+ (parent * 5) +'em">' + categoryKey;
                    createTree(category[categoryKey], x);
                    document.getElementById('abc').innerHTML += '</div>';
                }
                x++;
            }
        }
    }
}

createTree(treeObj, 0);

</script>
</body>
</html>
我得到的:

[{"land":[{"vehicles":["car","bus","train"]}]},{"air":[{"commercial":[{"flight":["local","international"]},"privateJet"]},"ship"]}]
<!doctype html>
<html>
<body>
<div id="abc"></div>

<script>
var treeObj = [{"land":[{"vehicles":["car","bus","train"]}]},{"air":[{"commercial":[{"flight":["local","international"]},"privateJet"]},"ship"]}]

function createTree(obj, parent) {
    for(key in obj) {
        if(typeof obj[key] == 'string') {
            document.getElementById('abc').innerHTML += '<div style="padding-left:10em">' + obj[key] + '</div>';
        } else {
            console.log(key, obj);
            x = 1;
            for(categoryKey in obj[key]) {

                var category = obj[key];
                if(Object.prototype.toString.call( category[categoryKey] ) === '[object Array]') {
                    document.getElementById('abc').innerHTML += '<div style="padding-left:'+ (parent * 5) +'em">' + categoryKey;
                    createTree(category[categoryKey], x);
                    document.getElementById('abc').innerHTML += '</div>';
                }
                x++;
            }
        }
    }
}

createTree(treeObj, 0);

</script>
</body>
</html>

代码:

[{"land":[{"vehicles":["car","bus","train"]}]},{"air":[{"commercial":[{"flight":["local","international"]},"privateJet"]},"ship"]}]
<!doctype html>
<html>
<body>
<div id="abc"></div>

<script>
var treeObj = [{"land":[{"vehicles":["car","bus","train"]}]},{"air":[{"commercial":[{"flight":["local","international"]},"privateJet"]},"ship"]}]

function createTree(obj, parent) {
    for(key in obj) {
        if(typeof obj[key] == 'string') {
            document.getElementById('abc').innerHTML += '<div style="padding-left:10em">' + obj[key] + '</div>';
        } else {
            console.log(key, obj);
            x = 1;
            for(categoryKey in obj[key]) {

                var category = obj[key];
                if(Object.prototype.toString.call( category[categoryKey] ) === '[object Array]') {
                    document.getElementById('abc').innerHTML += '<div style="padding-left:'+ (parent * 5) +'em">' + categoryKey;
                    createTree(category[categoryKey], x);
                    document.getElementById('abc').innerHTML += '</div>';
                }
                x++;
            }
        }
    }
}

createTree(treeObj, 0);

</script>
</body>
</html>

var treeObj=[{“陆地”:[{“车辆”:[“汽车”、“公共汽车”、“火车”]}},{“航空”:[{“商业”:[{“飞行”:[“本地”、“国际”]},“私人飞机”]},“船舶”]}]
函数createTree(对象,父对象){
用于(输入obj){
如果(对象的类型[键]='string'){
document.getElementById('abc').innerHTML++=''+obj[key]+'';
}否则{
控制台日志(键,obj);
x=1;
for(对象[key]中的类别){
var类别=对象[关键];
if(Object.prototype.toString.call(category[categoryKey])=='[Object Array]'){
document.getElementById('abc').innerHTML+=''+categoryKey;
createTree(类别[categoryKey],x);
document.getElementById('abc').innerHTML+='';
}
x++;
}
}
}
}
createTree(treeObj,0);

使用适当的对象,您可以构建新的无序列表和列表项

var数据=[{陆地:[{车辆:[“汽车”、“公共汽车”、“火车”]}}},{空中:[{商业:[{航班:[“本地”、“国际”]},“私人飞机”]}},{海上:[“船舶”]};
document.body.appendChild(data.reduce)(函数getValues(ul,el){
var li=document.createElement('li'),
钥匙
如果(类型el===‘对象’){
key=Object.key(el)[0];
li.appendChild(document.createTextNode(key));
if(Array.isArray(el[key])){
appendChild(el[key].reduce(getValues,document.createElement('ul'));
}
}否则{
li.appendChild(document.createTextNode(el));
}
ul.儿童(li);
返回ul;

},document.createElement('ul'))使用适当的对象,可以构建新的无序列表和列表项

var数据=[{陆地:[{车辆:[“汽车”、“公共汽车”、“火车”]}}},{空中:[{商业:[{航班:[“本地”、“国际”]},“私人飞机”]}},{海上:[“船舶”]};
document.body.appendChild(data.reduce)(函数getValues(ul,el){
var li=document.createElement('li'),
钥匙
如果(类型el===‘对象’){
key=Object.key(el)[0];
li.appendChild(document.createTextNode(key));
if(Array.isArray(el[key])){
appendChild(el[key].reduce(getValues,document.createElement('ul'));
}
}否则{
li.appendChild(document.createTextNode(el));
}
ul.儿童(li);
返回ul;

},document.createElement('ul'))。。。您忘了添加代码。^^^还忘了问问题。。。。。。您忘了添加代码。^^^还忘了问一个问题。。。