【发布时间】:2020-06-07 14:10:10
【问题描述】:
我有一个名为states 的数组,它是一个数组数组。每个数组元素有 2 项,一个美国州名及其缩写:
states = [
['Arizona', 'AZ'],
['Alabama', 'AL'],
['Alaska', 'AK'],
['Arkansas', 'AR'],
['California', 'CA'],
...
]
我有一个名为 statesData 的地图,其中 key = state 缩写。我正在尝试使用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 函数之外,到那时数据将不存在。
我认为我缺少一些关于异步开发的东西。
我可以根据要求提供更多信息。谢谢!
【问题讨论】:
标签: javascript dictionary asynchronous d3.js callback