情况:我从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>";
}
任何解决方案如何读取此数组中所有对象的值?
答案 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
:
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;
使用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);
&#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
});
在你的情况下,你应该再次重复你的键值的键和值。