Javascript通过元素循环并添加到表中
我很难找到一个解决方案来帮助我循环一堆元素并将所选的值放入表中。我已经能够提取一些值,但该方法不是动态的 以下是一个例子:Javascript通过元素循环并添加到表中,javascript,html,loops,d3.js,Javascript,Html,Loops,D3.js,我很难找到一个解决方案来帮助我循环一堆元素并将所选的值放入表中。我已经能够提取一些值,但该方法不是动态的 以下是一个例子: var Table = { "credit": { "link": "site link", "logoUrl": "logo url", "message": "message" }, "groups": [ { "labels": [
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;
提取值。但是有更多的团队、统计数据和分区,所以我需要某种循环来遍历元素,并将其放入动态表中 我想你的问题是关于过滤数组
排名的值。为了做到这一点,您可以使用该函数(如果您想使用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}]
如果这不是你的意思,你能用你想要的样品制作一个JSoFIDLE吗? < P>我会考虑你看。
它提供了一系列实用功能,可以帮助您,
例如,each()帮助您循环JSON属性
对于给定的示例对象(在完成末尾缺少的括号后)
给我:
gp,20
w,17
l,0
gf,64
ga,37
gd,27
pts,37
它的工作原理是提供您想要的对象作为第一个参数,并且您作为第二个参数提供的函数将与第一个参数的每个元素一起调用(假设它是一个列表)
我还建议您查看下划线模板,您可以使用它来呈现我放置console.log的表:
根据要对结果执行的操作,您可以使用以下方案查看对象:
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
}
}
}
var组、排名、统计数据、价值;
组=表1.2组;
//与团队合作
对于(var i=0,iLen=groups.length;我不明白你所说的提取值是什么意思。你想过滤数组stats
的元素吗?此外,我不明白为什么要使用d3.js标记,因为你的问题不涉及可视化。你想用d3函数来解决问题吗?一个预期输出的示例会很方便。你不能使用innerHTML修改IE中表格的一部分,尽管您可以使用它来编写整个表格(例如..
,或单元格的内容(例如cell.innerHTML=''';
,其中cell
是对TD或TH元素的引用)。它们不是“JSON属性”但是object properties.JSON是一种用于序列化对象的符号。您好Wingston Sharon,我想知道是否有可能将您获取的数据添加/附加/推送到主干集合中?不确定类似的内容会是什么样子,但可能是:teamCollection.push([名称:团队名称、gp:gamesPlayed、w:wins等];
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
}
}
}