调用map方法时报TypeError: betsModel.map is not a function的问题排查
报错原因
map是 JavaScript 数组独有的实例方法,你执行JSON.parse后得到的betsModel是普通键值对对象,不是数组,本身不携带map方法,调用就会抛出类型错误。- 你解析后的数据结构如下:
{ "13721": {"IdG":"1","N":"[] - 1","T":7,"A":true}, "13722": {"IdG":"1","N":"[] - 2","T":7,"A":true}, "6352": {"IdG":"1","N":"Zaman Sona Erdiğinde Beraberlik","T":1,"A":true} }
该结构为对象,外层没有数组包裹,无法直接调用数组方法。
修复方案
如果需要遍历所有值做处理,可选以下方案:
- 提取对象所有值转为数组后调用
map
// Object.values 会把对象所有属性值聚合为数组 Object.values(betsModel).map(a => { console.log(a); });
- 同时需要获取键名的场景,用
Object.entries
Object.entries(betsModel).map(([id, item]) => { // id 是原对象的键(13721/13722/6352),item 是对应的值 console.log(id, item); });
补充优化建议:你的代码缺少异常捕获逻辑,建议给正则匹配加非空判断,同时给Axios请求加
catch回调,避免接口返回格式变化时出现未捕获的异常。
内容的提问来源于stack exchange,提问作者developernode
相关产品推荐
相关产品推荐

