gpt4 book ai didi

javascript - 使用 Javascript 从 json 数据动态嵌套 ul\li 列表

转载 作者:太空狗 更新时间:2023-10-29 13:43:33 38 4
gpt4 key购买 nike

我需要从 json 数组创建一个动态嵌套的 ul\li 列表。

注意!我可以使用 jQuery 自行完成该转换,但在这种情况下我需要使用字符串,因为它是 node.js 而我无法访问 DOM。

数组也可以有不同的深度。

这是我使用的 json 数据以及它在转换后的样子。

var data = [{"id": "1", "name": "name_1", "parent_id": "0", "depth": "0"},
{"id": "2", "name": "name_2", "parent_id": "0", "depth": "0"},
{"id": "3", "name": "name_3", "parent_id": "1", "depth": "1"},
{"id": "4", "name": "name_4", "parent_id": "3", "depth": "2"}];

<ul>
<li>name_1</li> //depth 0
<li>name_2 //depth 0
<ul>
<li>name_3 //depth 1
<ul>
<li>name_3</li> //depth 2
</ul>
</li>
</ul>
</li>
</ul>

我希望这是清楚的。如果没有,请在评论中提出任何问题。先谢谢你。

最佳答案

试试这个:

var data = [{"id": "1", "name": "name_1", "parent_id": "0", "depth": "0"},
{"id": "2", "name": "name_2", "parent_id": "0", "depth": "0"},
{"id": "3", "name": "name_3", "parent_id": "1", "depth": "1"},
{"id": "4", "name": "name_4", "parent_id": "3", "depth": "2"}];

var initLevel = 0;

var endMenu =getMenu("0");

function getMenu( parentID ){
return data.filter(function(node){ return ( node.parent_id === parentID ) ; }).map(function(node){
var exists = data.some(function(childNode){ return childNode.parent_id === node.id; });
var subMenu = (exists) ? '<ul>'+ getMenu(node.id).join('') + '</ul>' : "";
return '<li>'+node.name + subMenu + '</li>' ;
});
}
console.log( '<ul>'+endMenu.join('')+ '</ul>');

但是,我认为基于您的数据的正确输出应该是这样的:

    <ul>
<li>name_1
<ul>
<li>name_3
<ul>
<li>name_4</li>
</ul>
</li>
</ul>
</li>
<li>name_2</li>
</ul>

这是 JSFiddle sample

更新版本:

http://jsfiddle.net/LqES7/47/

关于javascript - 使用 Javascript 从 json 数据动态嵌套 ul\li 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21140069/

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