[英]How to access all nested associative array elements?
情况:我从jQuery <-> PHP Ajax请求接收JSON数组。 这是未解析的JSON aray的结构:
{"Focus":{"id":2,"brand":"Ford","name":"Focus"}}
然后使用JSON.parse(json);
结构看起来像:
Focus: Object
brand: "Ford"
id: 2
name: "Focus"
问题:我想访问所有数组的“第一层”元素并将它们像一个对象一样使用,但是以下任何一种方法均无效:
for (var entity in dataTable)
{
formattedText += entity['brand'] + " " + entity['name'] + "<br>";
OR
formattedText += entity.brand + " " + entity.name + "<br>";
OR
formattedText += dataTable[0]['brand'] + " " + dataTable[0]['name'] + "<br>";
}
任何解决方案如何读取此数组中所有对象的值?
for..in
循环使用键 ,而不自己返回元素: for (var key in dataTable)
然后,您将使用dataTable[key]
访问每个元素。 关键实际上是元素的名称。
您可以像在for..of
循环中那样使用它,但这是所有浏览器尚不支持的新功能。
演示:
var dataTable = {"Focus":{"id":2,"brand":"Ford","name":"Focus"}} var formattedText = "" for (var key in dataTable) { formattedText += dataTable[key]['brand'] + " " + dataTable[key]['name'] + "<br>"; } document.write(formattedText)
Object.keys
将返回object
的所有键的数组
您可以通过keys
循环( forEach
/ for-loop
)以获得预期的输出。
使用forEach
:
var dataTable = { "Focus": { "id": 2, "brand": "Ford", "name": "Focus" } } var keys = Object.keys(dataTable); var str = ''; keys.forEach(function(item) { str += dataTable[item].brand + " " + dataTable[item].name; }); alert(str);
使用for-loop
:
var dataTable = { "Focus": { "id": 2, "brand": "Ford", "name": "Focus" } } var keys = Object.keys(dataTable); var str = ''; for (var i = 0, len = keys.length; i < len; i++) { str += dataTable[keys[i]].brand + " " + dataTable[keys[i]].name; } alert(str);
编写此代码的正确语法为:
循环时,将在变量实体中获取键名,然后使用该键名获取值,此外,还需要访问第一个键(即Focus)内的关联数组
var dataTable = JSON.parse('{"Focus":{"id":2,"brand":"Ford","name":"Focus"}}');
var formattedText = '';
for (var entity in dataTable.Focus) {
formattedText += dataTable.Focus['brand'] + " " + dataTable.Focus['name'] + "<br>";
}
听起来您在错误地使用每个功能。 在每个函数中,将参数更改为键和值,如下所示:
$.each(dataTable, function (key, value) {
//access key and values here
});
在您的情况下,您应该再次遍历键和键值的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.