从嵌套的object-JavaScript创建无序列表树
我有一个嵌套对象,如下所示:从嵌套的object-JavaScript创建无序列表树,javascript,html,list,object,dom,Javascript,Html,List,Object,Dom,我有一个嵌套对象,如下所示: const countries = { "Europe": { "France": {}, "Spain": {} }, "America": { "North": { "USA": {}, "Canada": {} }, "South": { "Brazil": {}, "Argentina": {} } } }; 我想从中创建一个无序列表,如下所示:
const countries = {
"Europe": {
"France": {},
"Spain": {}
},
"America": {
"North": {
"USA": {},
"Canada": {}
},
"South": {
"Brazil": {},
"Argentina": {}
}
}
};
我想从中创建一个无序列表,如下所示:
<ul>
<li>
Europe:
<ul>
<li>France</li>
<li>Spain</li>
</ul>
</li>
<li>
America:
<ul>
<li>
North:
<ul>
<li>USA</li>
<li>Canada</li>
</ul>
</li>
<li>
South:
<ul>
<li>Brazil</li>
<li>Argentina</li>
</ul>
</li>
</ul>
</li>
</ul>
您需要在每次迭代时为创建的li的内容赋值,不管如何-然后检查关联对象是否有键,如果有,则执行递归调用: 常量国家={ 欧洲:{ 法国:{}, 西班牙:{} }, 美国:{ 北:{ 美国:{}, 加拿大:{} }, 南方:{ 巴西:{}, 阿根廷:{} } } }; 函数createTreecontainer,数据{ const ul=container.appendChilddocument.createElement'ul'; 用于Object.entriesdata的常量[key,val]{ const li=ul.appendChilddocument.createElement'li'; li.textContent=key; 如果Object.keysval.length{ createTreeli,val; } } } createTreedocument.getElementById'container',国家/地区;
您需要在每次迭代时为创建的li的内容赋值,不管如何-然后检查关联对象是否有键,如果有,则执行递归调用: 常量国家={ 欧洲:{ 法国:{}, 西班牙:{} }, 美国:{ 北:{ 美国:{}, 加拿大:{} }, 南方:{ 巴西:{}, 阿根廷:{} } } }; 函数createTreecontainer,数据{ const ul=container.appendChilddocument.createElement'ul'; 用于Object.entriesdata的常量[key,val]{ const li=ul.appendChilddocument.createElement'li'; li.textContent=key; 如果Object.keysval.length{ createTreeli,val; } } } createTreedocument.getElementById'container',国家/地区;
如果性能不是一个问题,那么这可能很好。然而,如果是这样的话,当我们处理完对象时,是否值得考虑使用一个文档片段或仅仅是一个普通的innerHTML?除非有成千上万个节点,否则这不重要。在99%的情况下,性能不是问题——最好专注于干净、简短、可读的代码。浏览器只会在所有Javascript都完全完成后重新绘制。看起来我的方法是对的,但我做得太过分了,这对我来说非常困难。非常感谢,它看起来更清晰易读!如果性能不是一个问题,那么这可能很好。然而,如果是这样的话,当我们处理完对象时,是否值得考虑使用一个文档片段或仅仅是一个普通的innerHTML?除非有成千上万个节点,否则这不重要。在99%的情况下,性能不是问题——最好专注于干净、简短、可读的代码。浏览器只会在所有Javascript都完全完成后重新绘制。看起来我的方法是对的,但我做得太过分了,这对我来说非常困难。非常感谢,它看起来更清晰易读!