Javascript循环遍历元素并添加到表中
Javascript looping through elements and adding to table
我很难找到一个解决方案,这将有助于我循环通过一堆元素,并把选择的值到一个表。我已经能够撤回一些值,但方法不是动态的。
下面是一个例子:
var Table = {
"credit": {
"link": "site link",
"logoUrl": "logo url",
"message": "message"
},
"groups": [
{
"labels": [
{
"name": "Western Conference",
"type": "conference"
},
{
"name": "Central Division",
"type": "division"
}
],
"standings": [
{
"stats": [
{
"name": "gp",
"value": 20
},
{
"name": "w",
"value": 17
},
{
"name": "l",
"value": 0
},
{
"name": "gf",
"value": 64
},
{
"name": "ga",
"value": 37
},
{
"name": "gd",
"value": 27
},
{
"name": "pts",
"value": 37
}
],
"team": {
"id": 12345,
"link": "team link",
"name": "team name",
"shortName": "team"
}
},
元素的结构。到目前为止,我使用的是:
document.getElementById("sGamesPlayed").innerHTML=Table.groups[0].standings[0].stats[0].value;
提取值。然而,有更多的团队,统计数据和部门,所以我需要某种循环来遍历元素并将其放入动态表中。
我建议你看看http://underscorejs.org/。
它提供了一堆实用函数,可以帮助你,例如,_.each()可以帮助您遍历JSON属性。
对于您给出的示例对象(在补齐末尾缺少的括号之后),
_.each(Table.groups[0].standings[0].stats, function(stats){
console.log(stats['name']+","+stats['value'])
})
给我:
gp,20
w,17
l,0
gf,64
ga,37
gd,27
pts,37
它的工作原理是,你提供你想要的对象作为第一个参数,你作为第二个参数给出的函数将被第一个参数的每个元素调用(假设它是一个列表)。
我也会敦促你看看下划线模板,你可以用它来渲染你的表,我把console.log:
- http://net.tutsplus.com/tutorials/javascript-ajax/getting-cozy-with-underscore-js/
- http://scriptble.com/2011/01/28/underscore-js-templates/
我猜你的问题是关于过滤数组standings
的值。为了做到这一点,你可以使用jQuery的grep函数(如果你想使用jQuery)。
例如:
var arr = $.grep(Table.groups[0].standings[0].stats, function(d){return d.value>25})
arr = [{"name": "gf","value": 64}, {"name": "ga", "value": 37},{"name": "gd", "value": 27},{"name": "pts", "value": 37}]
如果这不是你的意思,你可以创建一个jsFiddle与你想要的样例吗?
根据您想对结果做什么,您可以使用如下方案来遍历对象:
var groups, standings, stats, value;
groups = Table.groups;
// Do stuff with groups
for (var i=0, iLen=groups.length; i<iLen; i++) {
standings = groups[i].standings;
// Do stuff with standings
for (var j=0, jLen=standings.length; j<jLen; j++) {
stats = standings[j];
// Do stuff with stats
for (var k=0, kLen=stats.length; k<kLen; k++) {
value = stats[k].value;
// Do stuff with value
}
}
}
当然,我不知道数据是什么,整体结构是什么,或者你想如何呈现它。但是如果您有深嵌套的数据,您所能做的就是深入挖掘它。您可能能够编写递归函数,但如果数据结构很复杂,它也可能变得非常难以维护。
相关文章:
- 如何在for循环中添加事件侦听器
- 如何使用for循环添加所有按钮'单击事件
- 如何在Angular.js中循环动态添加Fields并获取数据并将其发送到服务器
- 在不使用循环的情况下,从一个数据库字符串值向javascript数组添加多个对象
- js:如何制作一个循环,将20个不同的东西添加到一个对象中
- 借助for循环和数组在对象中添加属性
- Foreach循环添加值略有偏离
- 使用游标循环将JS对象添加到数组中
- foreach对象循环添加到堆栈顶部
- 在循环中添加addEventListener()只适用于最后一个按钮
- 如何在JavaScript中移除在循环中连接字符串时添加的额外字符
- 在循环中为日期添加天数,javascript
- Jquery循环洗涤器插件:添加到图像的链接
- 使用Javascript为HTML5音频添加循环
- 在 Jquery 中添加循环变量并存储在输入字段中
- 向 ajax 参数添加循环
- 如何使用jquery添加循环多个HTML5视频
- 如何在jQuery函数中传递数组或添加循环
- 可以在追加到 DOM 时添加循环
- 在较大的动画函数中为3个小动画添加循环函数