想象一下,我设置了一个像这样的JSON:
"A": {
"appointment": {
"201405091210": [
"1",
"2"
]
},
}
"B": {
"appointment": {
"201405091211": [
"1",
"2"
]
},
}
"C": {
"appointment": {
"201405091212": [
"1",
"2"
]
},
}
所以说现在我想输出每个对象中第一个对象的“名称”,意思是:
201405091210 201405091212 201405091212
我能这样做吗?
我试过了:
$.each(data, function (index, data) {
console.log(data.appointment[1]);
})
答案 0 :(得分:1)
当你的代码运行时,你没有JSON,你有一个JavaScript对象。
所以说现在我想输出"名称"每个对象中的第一个对象,意思是:
如果您的数据真的如图所示(appointment
对象中只有一个属性),那么您可以使用Object.keys()
并获取第一个(唯一)条目来获取名称appointment
对象中唯一的属性:
$.each(data, function (index, entry) {
console.log(Object.keys(entry.appointment)[0]);
});
另一种方法是使用for-in
并抓住第一个"拥有"属性:
$.each(data, function (index, entry) {
var name;
for (name in entry.appointment) {
if (entry.appointment.hasOwnProperty(name)) {
console.log(name);
break;
}
}
});
如果appointment
对象中可能有多个属性,则无法可靠地获得"第一个"属性名称.. JavaScript对象中的属性没有已定义的顺序。您必须查看所有属性并确定(可能通过检查与特定模式匹配的属性)您想要的属性。
附注:我将data
迭代器函数中的each
参数更改为entry
以避免混淆。在迭代器之外使用data
引用整个事情,但在{/ 1}} 内部迭代器只引用其中一个条目只是在寻找麻烦。