我有一个名为states
的数组,它是一个数组数组。每个数组元素都有2个项目,一个美国州名及其缩写:
states = [
['Arizona', 'AZ'],
['Alabama', 'AL'],
['Alaska', 'AK'],
['Arkansas', 'AR'],
['California', 'CA'],
...
]
我有一个名为statesData
的映射,键=状态的缩写。我正在尝试使用states
数组创建一个具有与statesData
相同值的新地图,但键等于该州的全名:
function setStatesFullData(statesFullData, statesData) {
statesData.each(function(key, value) {
states.forEach(function(element) {
if (key == element[1]) {
statesFullData.set(element[0], value);
}
})
})
console.log(statesFullData.size());
return statesFullData;
}
var statesFullData = d3.map();
statesFullData = setStatesFullData(statesFullData, statesData);
输出:
0
由于可变范围和(我相信)map.each
和array.forEach
是异步函数,因此可以预期。
我目前不了解如何解决:必须在statesData.forEach
函数外部使用数据,否则数据将不存在。
我认为我缺少异步开发方面的东西。
我可以根据要求提供更多信息。谢谢!
我没有做最后一部分(转换为d3.map(),但是如果需要的话,我可能可以。
我休息了(演示:https://codepen.io/Alexander9111/pen/YzXNGyZ):
const states = [
['Arizona', 'AZ'],
['Alabama', 'AL'],
['Alaska', 'AK'],
['Arkansas', 'AR'],
['California', 'CA']
];
const statesReversed = states.map((child, index) =>{
return [...child.reverse()]
});
console.log(statesReversed);
const statesConversionObject = Object.fromEntries(statesReversed);
console.log(statesConversionObject);
const statesData = {
'AZ': ['Some', 'Data'],
'AL': ['Some', 'Data'],
'AK': ['Some', 'Data'],
'AR': ['Some', 'Data'],
'CA': ['Some', 'Data']
};
const statesDataModified = {};
for (let key in statesData){
const newKey = statesConversionObject[key];
statesDataModified[newKey] = statesData[key];
}
console.log(statesDataModified);