我有一个嵌套了一个对象的数组,该对象位于一个Object中,也在一个Object中。
编辑:我的原始数据结构格式错误,因此这里是console.log(数据)的屏幕上限:
这是从AJAX请求返回的,我遇到了访问数组的问题。诀窍是它不会总是为每个父对象返回3个数组,数组的数量取决于“长度”,或者更确切地说,“长度”反映了每个包含数组的对象所期望的数组数。 “OID”是“th”和“uh”对象的每个数组的名称。
还有几个主要对象,使用for(var i in data)
我尝试过类似的事情:
for(var i in data) {
for(var x in data[i].clicks) {
//And now I'm lost here
//I've tried getting the name of the Array from "OID"
//and going from there, that failed miserably.
}
}
如何在不了解所述数组的名称,数量或长度的情况下完成这些数组的内容,最好能够获得每个数组的内容。
提前致谢。
答案 0 :(得分:1)
你的问题和数据结构不是很清楚,我不熟悉你用来声明数组的语法,这对我来说似乎不对。
如果您打算将数据结构用于
data={
"Clicks": {
"length": 3, //Can be between 0-3
"OID": {
1: "1",
2: "2",
3: "3"
},
"th": {
1: [
null,
null,
null,
null
],
2: [
null,
null,
null,
null
],
3: [
null,
null,
null,
null
]
},
"uh": {
1: [
null,
null,
null,
null
],
2: [
null,
null,
null,
null
],
3: [
null,
null,
null,
null
]
}
}
};
你想要做的是迭代th
和uh
中的所有元素,其中密钥来自OID
中的条目,你应该做的事情
for(var i = 1; i <= data.Clicks.length; i++){
data.Clicks.th[data.Clicks.OID[i]];
data.Clicks.uh[data.Clicks.OID[i]];
}
但是,如果您的密钥不是数字,那么通过为th
和uh
中的每一个返回一个数组数组似乎可以提供更好的服务:
data={
"Clicks": {
"th": [
[
null,
null,
null,
null
],
[
null,
null,
null,
null
],
[
null,
null,
null,
null
]
],
"uh": [
[
null,
null,
null,
null
],
[
null,
null,
null,
null
],
[
null,
null,
null,
null
]
]
}
};
并以
的形式访问它//assuming th and uh are of the same length always
for(var i = 1; i <= data.Clicks.th.length; i++){
data.Clicks.th[i];
data.Clicks.uh[i];
}