首页 > 解决方案 > 我想根据配置数组生成字符串

问题描述

我有一个对象数组。

[{id:"a5", parent: a3, value:"great grand child conmpnent"},
{id:"a1", parent: null, value:"parent conmpnent"},
{id:"a2", parent: a1, value:"child conmpnent"},
{id:"a3", parent: a2, value:"grand child conmpnent"},
{id:"a4", parent: a2, value:"grand child conmpnent"}]

我想根据这个数组生成下面的字符串。任何人都可以帮忙.. 格式化无关紧要,它只是一个字符串

在此处输入图像描述

标签: javascriptjava

解决方案


我解决了这个...

var arr = [{ id: "a5", parent: "a3", value: "great grand child conmpnent" },
{ id: "a1", parent: null, value: "parent conmpnent" },
{ id: "a2", parent: "a1", value: "child conmpnent" },
{ id: "a3", parent: "a2", value: "grand child conmpnent" },
{ id: "a4", parent: "a2", value: "grand child conmpnent" }];

const transform = (arr, parent) => {
    var str = '';    
    for (let key in arr) {
        if (arr[key].parent == parent) {
            str+= '<ul><li id="'+arr[key].id+'"><a>'+arr[key].value+'</a>'+ transform(arr, arr[key].id)+'</li></ul>';
        }
    }

    return str;
}

var generate = (arr) => {
    let parent = '';
    let str = '';
    for(let key in arr){
        if(arr[key].parent == null){
            parent = arr[key];
        }
    }
    str = transform(arr, parent.id);

    return '<ul><li id="'+parent.id+'"><a>'+parent.value +'</a>'+ str +'</li></ul>';    
}

console.log(generate(arr));


推荐阅读