如何将二维数组组合成多级联动的格式

如何将二维数组组合成多级联动的格式

要将[

['广东省','广州市','番禺区','市桥街道'],

['广东省','广州市','番禺区','大石街道'],

['广东省','广州市','番禺区','桥南街道'],

['广东省','广州市','番禺区','洛浦街道'],

['广东省','广州市','番禺区','沙头街道']

]组合成[{

    text: "广东省",

value: "广东省",

children: [

{

text: "广州市",

value: "广州市",

children: [

{

text: "番禺区",

value: "番禺区",

children: [

{

text: "市桥街道",

value: "市桥街道"

},

{

text: "大石街道",

value: "大石街道"

},

{

text: "桥南街道",

value: "桥南街道"

},

{

text: "洛浦街道",

value: "洛浦街道"

},

{

text: "石壁街道",

value: "石壁街道"

},

{

text: "钟村街道",

value: "钟村街道"

},

{

text: "大龙街道",

value: "大龙街道"

},

{

text: "沙头街道",

value: "沙头街道"

}

]

}

]

}

]

}]

这种格式,一到四级不一定


回答:

function map(list) {

function obj2arr(obj) {

return Object.entries(obj).map(([key, value]) => ({

text: key,

value: key,

children: value ? obj2arr(value) : null // 不想要children的key可以稍微修改下

}))

}

return obj2arr(list.reduce((res, arr) => {

arr.reduce((cur,v,i) => cur[v] ||= i == arr.length-1 ? null : {}, res);

return res;

}, {}))

}


回答:

function listToTree(list) {

const result = [];

list.forEach(textList => {

let siblings = result;

for(const text of textList) {

let data = siblings.find(data => data.text === text);

if (!data) {

data = { text, value: text, children: [] };

siblings.push(data);

}

siblings = data.children;

}

});

return result;

}

const list = [

[1, 2, 3],

[1, 2, 4],

[11, 22, 33],

];

console.log(listToTree(list));

以上是 如何将二维数组组合成多级联动的格式 的全部内容, 来源链接: utcz.com/p/936240.html

回到顶部