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

使用d3.csvParse解析CSV后调用map报错,直接用数组却正常

排查TypeError: data.map is not a function错误原因及解决方案

兄弟,你遇到的问题根源非常明确——你把数组转成了字符串,而字符串没有map方法!

咱们拆解一下第一个代码的问题:

  • d3.csvParse(data)本身已经返回了一个包含解析后对象的JavaScript数组,和你第二个代码里手动定义的data结构完全一致。
  • 但你多做了一步JSON.stringify(),这个方法的作用是把JS数组/对象转换成JSON格式的字符串。这时候你的data变量已经从数组变成了字符串类型,字符串当然没有map方法,所以才会抛出TypeError: data.map is not a function。

修正后的代码

把多余的JSON.stringify()去掉,直接使用d3.csvParse返回的数组即可:

var fs = require("fs");
var d3 = require("d3");
fs.readFile("test.csv", "utf8", function(error, data) {
  // 直接用解析后的数组,不需要转成字符串
  var parsedData = d3.csvParse(data);
  parsedData.map((item, i) => console.log(`Hello ${item.col1} this ${item.col2} there are ${item.col3} blabla`));
});

额外小建议

你原代码里用var data = JSON.stringify(...)覆盖了回调函数里的data参数(也就是读取到的CSV文本),虽然这不是报错的直接原因,但这种变量名重复的写法很容易造成混淆,改成parsedData这类更清晰的命名会更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:42:59