如何在JavaScript中迭代JSON对象并使用它创建表
How to iterate over JSON object in JavaScript and create table with it?
我有一个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
其中pinchetabla
为div
。然而,我甚至不能正确访问JSON键和值。我错过了什么?
当您使用点表示法访问属性时,例如object.propertyname
, JavaScript将在object
中查找propertyname
。在您的例子中,d
和dd
仅仅是object
中的键,但是JavaScript将在diferencias
中查找它们,并且无法找到它们。
为了动态访问属性,必须使用下标/括号符号,如
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>';
}
有几个问题。
- 当你在javascript中迭代字典时,它会返回键。所以你的内部迭代循环应该是
for(dd in diferencias[d])
- 你也需要
<td>
标签。 - 你需要实例化
var tr
在你使用它之前(tr += r
)
相关文章:
- 在创建对象后附加一个jquery事件
- 错误:自动化服务器可以't创建对象
- 如何在不使用 new 关键字的情况下从函数创建对象
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 创建对象函数原型和代码是错误的
- 使用Undercore创建对象集合
- 如何在JavaScript中创建对象时使用变量的值
- 正在创建对象的递归列表
- 这两种不同的创建对象文字的方法有什么区别
- ES6 const,用于在JavaScript中创建对象原型;这是一种模式吗
- 使用字符串作为名称创建对象
- 使用参数创建对象
- 如何在JS中创建对象的可变和不可变副本
- 用javascript创建对象的dynamic数组
- Javascript,用vars创建对象的最佳方法
- 离子幻灯片框中未创建对象
- 在创建对象时调用javascript函数
- JavaScript - 有没有办法动态创建对象的新实例
- 为什么使用 Object('123') 创建对象会创建一个 String() 对象,但 typeof 是“对象”
- EmberJS - 在创建对象后添加绑定