You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用API获取数据时出现TypeError: completedata.map is not a function求助

问题分析:TypeError: completedata.map is not a function

问题场景

尝试从指定API获取数据时控制台抛出错误,但使用相同代码调用另一个API却能正常运行,核心疑问是两个API的差异在哪里。

原代码

<script>
    
fetch('https://js.cexplorer.io/api-static/basic/global.json').then((data)=>{
    return data.json();
}).then ((completedata)=>{
    
    let data1="";
    completedata.map((values)=>{
        data1=`
        <div class="output">
          <h3>Epoch</h3>
          <p>${values.epochNo}</p>
        </div>`
    });
    document.getElementById("live1").innerHTML=data1;
}).catch((err)=>{
    console.log(err);
})
</script>

控制台错误

TypeError: completedata.map is not a function

核心原因与API差异

两个API返回的数据结构完全不同:

  • coinlore API返回数组类型:即使仅包含一条数据,它的返回结果也是一个数组(格式类似[{id:257, ...}]),而map()是数组的原生方法,所以你的代码可以正常遍历。
  • cexplorer API返回单个对象:它的返回结果是一个独立的对象(格式类似{epochNo: 420, ...}),对象没有map()方法,直接调用就会抛出类型错误。

修正后的代码

不需要用map()遍历,直接访问对象属性即可:

<script>
    
fetch('https://js.cexplorer.io/api-static/basic/global.json').then((data)=>{
    return data.json();
}).then ((completedata)=>{
    let data1 = `
    <div class="output">
      <h3>Epoch</h3>
      <p>${completedata.epochNo}</p>
    </div>`;
    document.getElementById("live1").innerHTML=data1;
}).catch((err)=>{
    console.log(err);
})
</script>

内容的提问来源于stack exchange,提问作者Gianfranco Tamberini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:20:32