Поиск данных JSON - PullRequest
1 голос
/ 06 мая 2011

У меня есть массив, вложенный в объект, который находится внутри объекта, который также находится в объекте.

РЕДАКТИРОВАТЬ: Моя исходная структура данных была искажена, так что здесь скриншот экранаconsole.log (data):

enter image description here

Это возвращается из запроса AJAX, и у меня возникла проблема с получением массива.Хитрость в том, что он не всегда будет возвращать 3 массива на родительский объект, количество массивов зависит от «длины», или, скорее, «длина» является отражением того, сколько массивов ожидать в каждом объекте, который содержит массивы.«OID» - это имя каждого массива для объектов «th» и «uh».

Также может быть несколько основных объектов, которые повторяются с for(var i in data)

Iя пробовал что-то вроде:

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.
    }
}

Как я могу получить содержимое каждого из этих массивов, было бы лучше, если бы это можно было сделать, не зная имени, количества или длины указанных массивов.

Заранее спасибо.

1 Ответ

1 голос
/ 06 мая 2011

Ваш вопрос и структура данных не очень понятны, и я не знаком с синтаксисом, который вы использовали для объявления своих массивов, мне он кажется неправильным.

Если вы предполагали, что ваша структура данных будет

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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...