题
如果我有以下几种:
{"hdrs": ["Make","Model","Year"],
"data" : [
{"Make":"Honda","Model":"Accord","Year":"2008"}
{"Make":"Toyota","Model":"Corolla","Year":"2008"}
{"Make":"Honda","Model":"Pilot","Year":"2008"}]
}
我有一个"人类发展报告"的名称(即"作出"),我怎么可以参考的 data
阵列的实例?似乎喜欢 data["Make"][0]
应该工作.但无法得到正确的参考
编辑
对不起,模糊..我可以循环 hdrs
得到每个hdr的名字,但我需要利用每个实例的价值 hdrs
找到的所有数据元素 data
(不一定是更好的解释)。我将它放在一个变量 t
因为它是JSON(赞赏重新标记),我希望能够参与这样的事情: t.data[hdrs[i]][j]
解决方案
我不得不改变你的代码一点:
var x = {"hdrs": ["Make","Model","Year"],
"data" : [
{"Make":"Honda","Model":"Accord","Year":"2008"},
{"Make":"Toyota","Model":"Corolla","Year":"2008"},
{"Make":"Honda","Model":"Pilot","Year":"2008"}]
};
alert( x.data[0].Make );
编辑:在响应你的编辑
var x = {"hdrs": ["Make","Model","Year"],
"data" : [
{"Make":"Honda","Model":"Accord","Year":"2008"},
{"Make":"Toyota","Model":"Corolla","Year":"2008"},
{"Make":"Honda","Model":"Pilot","Year":"2008"}]
};
var Header = 0; // Make
for( var i = 0; i <= x.data.length - 1; i++ )
{
alert( x.data[i][x.hdrs[Header]] );
}
其他提示
因此,这样吗?
var theMap = /* the stuff you posted */;
var someHdr = "Make";
var whichIndex = 0;
var correspondingData = theMap["data"][whichIndex][someHdr];
应工作,如果我理解正确的话...
var x = {"hdrs": ["Make","Model","Year"],
"data" : [
{"Make":"Honda","Model":"Accord","Year":"2008"}
{"Make":"Toyota","Model":"Corolla","Year":"2008"}
{"Make":"Honda","Model":"Pilot","Year":"2008"}]
};
x.data[0].Make == "Honda"
x['data'][0]['Make'] == "Honda"
你有你的阵/哈希查找倒退:)
我不确定我明白你的问题,但是...
假设上述JSON是var obj,你想:
obj.data[0]["Make"] // == "Honda"
如果你只是想要参考该领域所引用的第一个标题,它会喜欢的东西:
obj.data[0][obj.hdrs[0]] // == "Honda"
首先,你忘了你的后的逗号在你的阵列数据的项目。
试试下面的:
@肯特弗雷德里克:注意最后的逗号并不是严格必要的,但可以更容易地移动线周围(即,如果你移动或增加后的最后一线,并且它没有一个逗号,你必须特别记得添加一个。我认为这是最好的,总是有后逗号。)var obj_hash = { "hdrs": ["Make","Model","Year"], "data" : [ {"Make":"Honda","Model":"Accord","Year":"2008"}, {"Make":"Toyota","Model":"Corolla","Year":"2008"}, {"Make":"Honda","Model":"Pilot","Year":"2008"}, ] };
var ref_data=obj_hash.数据;
alert(ref_data[0].Make);
也许是尝试数据的[0]。让
靠近,你会用
var x = data[0].Make;
var z = data[0].Model;
var y = data[0].Year;
你的代码显示是不是语法上正确的;它需要一些逗号。我得到这个工作:
$foo = {"hdrs": ["Make","Model","Year"],
"data" : [
{"Make":"Honda","Model":"Accord","Year":"2008"},
{"Make":"Toyota","Model":"Corolla","Year":"2008"},
{"Make":"Honda","Model":"Pilot","Year":"2008"}]
};
然后我可以访问的数据为:
$foo["data"][0]["make"]
与帮助的答复(并在获得内部和外部的循环正确的)我得到这个工作:
var t = eval( "(" + request + ")" ) ;
for (var i = 0; i < t.data.length; i++) {
myTable += "<tr>";
for (var j = 0; j < t.hdrs.length; j++) {
myTable += "<td>" ;
if (t.data[i][t.hdrs[j]] == "") {myTable += " " ; }
else { myTable += t.data[i][t.hdrs[j]] ; }
myTable += "</td>";
}
myTable += "</tr>";
}
不隶属于 StackOverflow