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

Node.js项目中出现Data.map is not a function错误求助

搞定"Data.map is not a function"这个坑!

哥们儿,你这个错误的根源太典型了——你客户端拿到的data根本不是数组,是个字符串!map()是数组才有的方法,字符串当然调用不了啦😅

为啥会这样?

看你服务器里的代码:你把doctor.json里的数组用JSON.stringify(config)转成字符串再res.send出去,但jQuery的$.get()默认会根据响应头来处理数据。你现在发的是纯字符串,客户端就把它当成普通文本接收,所以data就是一串JSON格式的字符串,不是数组,自然没法用map。

两种解决办法,随便挑一个:

方法1:服务器直接发JSON(推荐!最简单)

Express的res.send()其实支持直接传对象/数组,它会自动帮你转成JSON,还会设置正确的Content-Type响应头。改一下你的/doctors接口就行:

app.get('/doctors', function(req,res){
  var config = require('./doctor.json');
  res.send(config); // 直接扔数组,不用手动stringify!
})

这样客户端用$.get拿到的data就是现成的数组,直接data.map(addElement)就OK了。

方法2:客户端手动解析字符串

要是你不想改服务器代码,那就在客户端把收到的字符串转成数组:

$.get('/doctors', function (data) {
  $("<div class='row' id='dottori' ></div>").appendTo(".team");
  const doctorArray = JSON.parse(data); // 把字符串解析成数组
  doctorArray.map(addElement);
});

另外提个小细节

你贴的addElement函数好像没写完,少了闭合的},记得补上:

function addElement(doctor){
  console.log("Adding doctor");
  $("#dottori").append('<p> '+doctor.name+'</p>');
} // 这里的大括号别忘了加!

内容的提问来源于stack exchange,提问作者Mattia Surricchio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:46:33