如何在JavaScript中迭代JSON对象并使用它创建表?

时间:2014-03-18 15:38:44

标签: javascript html json

我有一个这种结构的JSON:

diferencias = {
    "1": {
      "1": 543.0, 
      "0": 542.0
    }, 
    "2": {
      "0 1": 0.3333333333333333
    }
}

我需要获取一个外键作为列的表。

我写了以下代码:

$("#pinchetabla").empty()
    var tr = ""
    for (d in diferencias) {
        var r = ''
        for (dd in d) {
            //console.log(dd)
            r += '<tr>' + 'f[' + diferencias.dd + ']=' + diferencias.d.dd + '</tr>'
        }
        tr += r
    }

    var table = "<table id='resultados' class='table table-condensed'>" + tr + "</table>"
$("#pinchetabla").append(table)

我已经关注jsfiddle

pinchetabladiv的位置。但是,我甚至无法正确访问JSON密钥和值。我错过了什么?

2 个答案:

答案 0 :(得分:3)

当您使用dot notation访问属性时,object.propertyname,JavaScript会在propertyname中查找object。在您的情况下,ddd仅仅是object中的关键字,但JavaScript会在diferencias中查找它们而无法找到它们。

为了动态访问属性,您必须使用subscript/bracket notation,就像这样

r += '<tr>' + 'f[' + d + ']=' + diferencias[d][dd] + '</tr>';

for循环也应该像这样

for (dd in diferencias[d]) {

您的表格创建代码可以像这样修复

var tr = "";
for (d in diferencias) {
    var r = '<tr>';
    for (dd in diferencias[d]) {
        r += '<td>' + 'f[' + d + ']=' + diferencias[d][dd] + '</td>';
    }
    tr += r + '</tr>';
}

答案 1 :(得分:1)

一些问题。

  1. 当您在javascript中迭代字典时,它会返回键。所以你的内部迭代循环应该是for(dd in diferencias[d])
  2. 您还需要<td>个标签。
  3. 在使用var tr
  4. 之前,您需要实例化tr += r

    http://jsfiddle.net/fQ9Py/1/