【发布时间】:2020-03-10 08:19:46
【问题描述】:
我试图找到我遇到的类似问题但没有找到。
这是我的 json:
{
"name": "United States",
"code": "US",
"label": "State",
...
"province_codes": {
"Alabama": "AL",
"Alaska": "AK",
"American Samoa": "AS",
"Arizona": "AZ",
"Arkansas": "AR",
...
}
}
取自这个 json repo https://raw.githubusercontent.com/JohnBendfeldt/country-province-data/master/countries.json
我正在尝试仅获取美国并获取 province_codes 密钥并将其放入我的反应组件的新数组中。我已经尝试了以下方法。
const states = [];
countryProvinceData.forEach(field => {
if (field.name === "United States") {
field.province_codes.map(code => {
states.push({
value: code, //Abbreviated state
label: code + " (" + code + ")" //full name and abbreviation in brackets
});
});
}
});
this.setState({ states });
但它给了我这个错误:TypeError: field.province_codes.map is not a function
希望有人能提供帮助或指导。
【问题讨论】:
-
map是数组原型的函数,province_codes似乎不是数组 -
另外,一般来说,当您只对副作用感兴趣时,不要使用
map。使用forEach。它会让你的意图变得清晰。 -
我也尝试过 forEach 并返回相同的错误。我知道它不是一个数组,它是一个对象。
-
好吧,
forEach当然不适用于您当前的代码。我的观点是一旦你有一个数组(通过迭代,例如Object.keys)如果你只对副作用感兴趣,请使用forEach而不是map
标签: javascript reactjs