Err*_*Fox 2 javascript jquery for-loop for-in-loop
我还是学习循环的新手,所以我有点困惑.我有一个for...in循环循环json文件的对象.然后我让jQuery为每个对象创建一些html元素.我有一个问题,每次循环,它重复以前的对象和新的对象,所以输出变为:
-name
-name
-test
-name
-test
-someone
-name
-test
-someone
-something
Run Code Online (Sandbox Code Playgroud)
但我正在努力做到
-name
-test
-someone
-something
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我目前的代码是:
var html = ""
for (var name in urls) {
html += `<div class='card-panel white'><div class='container'><div class='row'><div class='input-field col s12'> ${name} <br> ${urls[name].url} </div></div></div></div>`
$("#main").append(html)
}
Run Code Online (Sandbox Code Playgroud)
您在每次迭代时附加HTML字符串,而是将整个代码附加到for循环之外.虽然Object#hasOwnProperty用于获取自己的属性而不是其原型.
var html = ""
for (var name in urls) {
if(urls.hasOwnProperty(name))
html += `<div class='card-panel white'><div class='container'><div class='row'><div class='input-field col s12'> ${name} <br> ${urls[name].url} </div></div></div></div>`;
}
$("#main").append(html)
Run Code Online (Sandbox Code Playgroud)
我认为使用Object.keys()和String#map方法会更好.
$("#main").append(
Object.keys(urls).map(function(name){
return `<div class='card-panel white'><div class='container'><div class='row'><div class='input-field col s12'> ${name} <br> ${urls[name].url} </div></div></div></div>`;
})
)
Run Code Online (Sandbox Code Playgroud)