如何访问所有嵌套的关联数组元素?

时间:2016-01-12 11:10:30

标签: javascript jquery arrays json

情况:我从jQuery< - >获得JSON数组PHP Ajax请求。这是未解析的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>";
}

任何解决方案如何读取此数组中所有对象的值?

4 个答案:

答案 0 :(得分:3)

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)

答案 1 :(得分:1)

  

Object.keys将返回object

的所有键的数组

您可以通过for-loop循环(forEach / keys)以获得预期的输出。

使用forEach

&#13;
&#13;
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);
&#13;
&#13;
&#13;

使用for-loop

&#13;
&#13;
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);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

写这个的正确语法是:

循环时,您将在变量实体中获取密钥名称,然后使用它来获取值,同样,您需要访问第一个密钥内的关联数组,即<强>焦点

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>";
}

答案 3 :(得分:0)

听起来你正在以错误的方式使用每个功能。在你的每个函数中更改键和值的参数,如下所示:

$.each(dataTable, function (key, value) {
     //access key and values here
});

在你的情况下,你应该再次重复你的键值的键和值。

相关问题