提问人:TraktorJack 提问时间:4/19/2021 最后编辑:UnmitigatedTraktorJack 更新时间:4/19/2021 访问量:46
如何遍历数组/对象并将某些元素添加到 li?
How can I iterate over an array/object and add certain elements to an li?
问:
这是我的第一个问题,所以如果它有点模糊,我们深表歉意。我正在学习JS,我已经在一个问题上卡住了几个小时。我得到了一个对象,并被告知将该对象中的某些对象添加到ul中。
{
"dsl": {
"DSL-I-100000": {
"DSL-I-100000": { // Add this to an li
"priority": "1",
"standard": true,
"customer": true,
"internet": true,
"business": true,
"consumer": true,
"filename": "DSL-I-100000.json",
"download": "100",
"vpCategory": "dsli"
}
},
"DSL-IP-100000": {
"DSL-IP-100000": { // Add this to an li
"priority": "1",
"standard": true,
"customer": true,
"internet": true,
"phone": true,
"business": true,
"consumer": true,
"filename": "DSL-IP-100000.json",
"download": "100",
"vpCategory": "dslip"
}
},
"DSL-IP-16000": {
"DSL-IP-16000": { // Add this to an li
"priority": "1",
"standard": true,
"customer": true,
"internet": true,
"phone": true,
"business": true,
"consumer": true,
"filename": "DSL-IP-16000.json",
"download": "16",
"vpCategory": "dslip"
}
},
我的任务是创建一个包含“元代码”的列表,正如我的导师所说的那样。这将是 '“DSL-I-100000”:',“DSL-IP-100000”:, “DSL-IP-16000”:。最好的方法是什么?我的JS知识非常有限,所以请像向傻瓜一样解释。先谢谢你。
答:
0赞
Som Shekhar Mukherjee
4/19/2021
#1
只需从中获取密钥,并为每个密钥创建一个元素。obj.dsl
li
const obj = {
dsl: {
"DSL-I-100000": {
"DSL-I-100000": {
priority: "1",
standard: true,
customer: true,
internet: true,
business: true,
consumer: true,
filename: "DSL-I-100000.json",
download: "100",
vpCategory: "dsli",
},
},
"DSL-IP-100000": {
"DSL-IP-100000": {
priority: "1",
standard: true,
customer: true,
internet: true,
phone: true,
business: true,
consumer: true,
filename: "DSL-IP-100000.json",
download: "100",
vpCategory: "dslip",
},
},
"DSL-IP-16000": {
"DSL-IP-16000": {
priority: "1",
standard: true,
customer: true,
internet: true,
phone: true,
business: true,
consumer: true,
filename: "DSL-IP-16000.json",
download: "16",
vpCategory: "dslip",
},
},
},
};
const ul = document.querySelector("ul");
Object.keys(obj.dsl).forEach(k => {
const li = document.createElement("li");
li.innerText = k;
ul.appendChild(li);
})
<ul>
</ul>
评论
0赞
Som Shekhar Mukherjee
4/19/2021
@TraktorJack 请检查这是否解决了您的问题,如果您有任何问题,请告诉我。
0赞
TraktorJack
4/19/2021
谢谢Som!但是我拥有的对象持续了相当长的时间,我只附加了前几个嵌套对象。到目前为止,我尝试的是将对象转换为数组,因为遍历数组似乎比遍历对象更容易。我在想for循环或函数会是最有效的解决方案吗?
0赞
Som Shekhar Mukherjee
4/19/2021
@TraktorJack 我给出的解决方案是一个有效的解决方案,即使有很多密钥。 Indeed 返回一个数组。如果对象的结构保持不变,则 no.的项目不会使此解决方案效率低下。Object.keys()
0赞
TraktorJack
4/19/2021
是的,但我不会显示每个键。我刚刚在顶部发表了评论,如果这有意义的话,我只应该显示倒数第二个嵌套对象。不是每个键
0赞
Som Shekhar Mukherjee
4/19/2021
@TraktorJack 如果有三个键,你只想显示第二个键?请澄清,以便我以更好的方式提供帮助。
评论