我正在尝试创建一个嵌套地图,像这样,
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);
}
}