调用Shazam API遍历数据时遇data.map is not a function错误求助
解决"data.map is not a function"错误的常见原因
针对你用Shazam API时遇到的问题——即便console.log(data)显示是数组,仍出现该错误,大概率是以下几种情况:
- 变量被意外重写:检查
console.log(data)和调用map的代码之间,有没有其他地方修改了data变量。比如后续代码把data赋值成了对象、null或者字符串,导致调用map时它已经不是数组了。 - 异步时序错误:如果API请求是异步的,你可能在数据还没返回就执行了
map。比如console.log(data)是在请求回调里打印的,但map写在了回调外面,这时候初始的data可能是undefined或者默认的非数组值,自然触发错误。 - 数据结构嵌套没处理对:你看到的20个tracks数组,可能是嵌套在
data的某个属性里。比如API实际返回的是{ tracks: [...] },你把整个响应对象当成了data,直接调用data.map肯定报错,得用data.tracks.map才行。再仔细看看console.log(data)的输出结构,确认要遍历的数组是不是data本身。 - 隐式类型转换导致数组变非数组:某些操作可能悄悄把数组转成了其他类型,比如错误的解构、
Object.assign使用不当,或者不小心把data和其他非数组变量合并了。可以在调用map前加个校验:if (Array.isArray(data)) { data.map(...) },同时打印typeof data和Array.isArray(data)的结果,确认当前data的类型。
内容的提问来源于stack exchange,提问作者Ashay Krishna
相关产品推荐
相关产品推荐

