Uncaught TypeError: datapoints.data.map is not a function报错求助
报错原因
map() 是 JavaScript 数组专属的实例方法,仅可作用于数组类型的数据。你调用的接口返回的 datapoints.data 是 对象类型(结构为 {"boy": 10, "girl": 15}),不属于数组,所以调用 map 方法会抛出该类型错误。
解决方法
你可以根据实际业务需求选择对应方案:
- 如果你仅需要单独获取
boy字段的数值,无需遍历操作,直接取值即可,将原有map相关代码替换为:
const labelsboy = datapoints.data.boy;
运行后输出的结果为10。
- 如果你需要把
data下的所有字段值收集为数组再做后续处理,可以先通过Object.values()将对象转为值数组再操作,参考代码如下:
// 将data对象的所有值转为数组 const dataValues = Object.values(datapoints.data); // 按需从数组中筛选、提取对应值即可
你也可以增加类型校验逻辑,避免后续接口结构变动引发同类报错:
if(Array.isArray(datapoints.data)){ // 确认是数组类型再调用map方法 const labelsboy = datapoints.data.map(item => item.boy); } else { console.log('data字段不是数组,请检查接口返回结构'); }
内容的提问来源于stack exchange,提问作者Han Hanie
相关产品推荐
相关产品推荐

