Вложенная карта в d3 (пользовательский ключ)

Я пытаюсь создать вложенную карту, что-то вроде этого,

Map<Key1, Map<Key2, Map<Key3, List<Objects>>>> 

используя карту d3. Я не хочу использовать d3.nest, так как хочу индексировать свои данные на пользовательских ключах для более быстрого сокращения.

Мой ключ создается в соответствии с моими ожиданиями, но в тот момент, когда я пытаюсь вставить значения (список), он вставляется во все ключи.

Пример вывода: <1, <1, <1, [1,2,3,4]> <1, <1, <2, [1,2,3,4]>

Ожидаемый результат: <1, <1, <1, [1,2]> <1, <1, <2, [3,4]>

Я написал ниже упомянутый код. Может ли кто-то указать мне правильное направление, что я делаю здесь неправильно:

var dataByYear = d3.map();
 var dataByMonth = d3.map();
 var map = d3.map();

for (var rowIndex = 0; rowIndex < raw_data_length; rowIndex++) {
        var firstID = data[rowIndex].firstKey;
        var year = data[rowIndex].year; // year is second key
        var month = data[rowIndex].month; // month is third key
        if (ID_map.has(firstID)) {
            if (dataByYear.has(year)) {
                if (dataByMonth.has(month)) {
                    var dataSet = dataByMonth.get(month);
                    dataSet.push(data[rowIndex]); //I suspect this is working as a global variable, thats why its updating the array irrespective of keys
                    dataByMonth.set(month, dataSet);
                }
            } else {
                dataByYear.set(year, new d3.map());
            }
        } else {
            dataByMonth.set(month, []);
            dataByYear.set(year, dataByMonth);
            ID_map.set(firstID, dataByYear);
        }
    }

0 ответов

Другие вопросы по тегам