Массив объектов JavaScript

Добрый день.

Я загружаю файл json с информацией, чтобы создать раскладку сил в D3. Я могу получить доступ к данным, хотя я могу передать значения в ссылки var, что это массив объектов, который отвечает за создание визуализации. Любой может помочь передать данные из json в var ссылки. Сценарий взрывается. Мне нужно создать ссылки var, как показано ниже, где источник = для beforePos и ​​цель? afterPos и ​​типом является строка "medium"

var links = [{source: "beforePos", target: "afterPos", type: "medium"},];

Примечание. Загруженный json огромен.

Любой может мне помочь!

var links = [];
for (i = 0; i < jsonFile.generations.length; i++) {
    for (j = 0; j < jsonFile.generations[i].nodes.length; j++) {
        for (w = 0; w < jsonFile.generations[i].nodes[j].after.stid.length; w++) {
            afterPos = jsonFile.generations[i].nodes[j].after.stid[w];
            beforePos = jsonFile.generations[i].nodes[j].before.stid[w];
            var test = {
                source: beforePos,
                target: afterPos,
                type: "medium"
            };
            links.push(test);
        }
    }
}

person user2920033    schedule 25.10.2013    source источник
comment
Сценарий взрыва слишком расплывчатый. Пожалуйста, объясните, в чем проблема, включая трассировку стека.   -  person musical_coder    schedule 25.10.2013
comment
Проблема в том, что когда я передаю beforePos и ​​afterPos, я могу видеть только последнее значение, а не те, которые создают множественные массивы {объекты}, эта часть удара var test = { source: beforePos, цель: afterPos, тип: средний   -  person user2920033    schedule 25.10.2013


Ответы (1)


С вашим описанием лучший вариант - ускорить процесс за счет кэширования элементов.

var links = [];
JG = jsonFile.generations;
for (i = 0, endI = JG.length; i < endI ; i++) {
    JGIN = JG[i].nodes;
    for (j = 0, endJ = JGIN.length ; j < endJ ; j++) {
        JGINJ = JGIN[j];
        JGINJAS=JGINJ.after.stid;
        JGINJBS=JGINJ.before.stid;
        for (w = 0,  endW = JGINJAS.length; w < endW ; w++) {
            links.push({
                source: JGINJAS[w], target: JGINJBS[w], type:"medium"
            });
        }
    }
}

Это сокращает необходимое время, но не позволяет избежать создания массива объектов i*j*w.

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

person MC ND    schedule 25.10.2013