d3.json 获取'Uncaught SyntaxError: missing ) after argument list'



我正在学习使用v4的d3教程。我在回调中遇到了问题,发现这在v5中发生了变化,所以我将其更新为下面的代码。我相信我已经逐字逐句地遵循了d3文档中的语法。在vsCode中,我在第21行和第22行的任何标点处都出现了语法错误:应为","。但在localhost中,通过实时服务器,我在参数列表app.js:21后得到:"Uncaught SyntaxError:missing("。我尝试添加和删除分号。我尝试用占位符函数(只是console.log(替换引用的函数"type",以消除其中出现语法错误的可能性。我已经安装了npm d3,以确保它是最新的。在相关的情况下,该函数的目的是在将数据记录到控制台之前修改部分数据(将字符串解析为数字,将字符串解析成js-date-obj(。

const parseDate = string => d3.timeParse('%Y-%m-%d')(string);
function type(d) {
return {
recordId: +d.recordId,
dataDate: parseDate(d.dataDate),
unitName: d.unitName,
unitId: d.unitId,
type: d.type,
}
};
d3.json("http://localhost:3000/records").then(type(data) {
console.log(data);
});

我也试过:

let newData=
d3.json("http://localhost:3000/records")
.then((d) => {
type(d)
console.log(d)
});
console.log(newData);

这不会导致语法错误,console.log(d(会显示未解析的数据,但console.log(newData(似乎只返回了一个promise。

我是一个新手,所以如果你能回答我的问题,请像我5岁一样向我解释,谢谢:(

d3.json()确实需要一个.json文件,因此请确保相应地替换您的URL。然后,为了获得您的数据,您需要一个函数,因此请按如下方式替换您的Promise:

d3.json("http://localhost:3000/records.json").then(function(data) {
console.log(data);
});

要格式化数据,最好的方法是在d3.json()方法中进行格式化。试试这个:

const dataset = d3.json("http://localhost:3000/records.json", d => {    
return {      
recordId: +d.recordId,         
dataDate: parseDate(d.dataDate),         
unitName: d.unitName,         
unitId: d.unitId,         
type: d.type,   
} 
});    
dataset.then(function(data) { 
console.log(data); 
});

您可以在d3.js文档中找到d3fetch 的其他示例

最新更新