Javascript 从D3函数返回js数据集
我得到了以下工作代码:Javascript 从D3函数返回js数据集,javascript,asynchronous,d3.js,Javascript,Asynchronous,D3.js,我得到了以下工作代码: var datasetBarChart = [{ group: "X", category: "Oranges", measure: 100 }, { group: "Y", category: "Apples", measure: 200 }]; // set initial group value var group = "X"; function datasetBarChosen(group) { var
var datasetBarChart = [{
group: "X",
category: "Oranges",
measure: 100
}, {
group: "Y",
category: "Apples",
measure: 200
}];
// set initial group value
var group = "X";
function datasetBarChosen(group) {
var ds = [];
for (x in datasetBarChart) {
if (datasetBarChart[x].group == group) {
ds.push(datasetBarChart[x]);
}
}
return ds;
}
我没有在datasetBarChart
中硬编码数据,而是将数据移动到如下所示的csv中:
group,category, measure
X, Oranges, 100
Y, Applies, 200
现在我正在尝试修改函数-它仍然需要返回ds代码>-以下是我的一次尝试失败:
function datasetBarChosen(group) {
var ds = [];
d3.csv("http://ourServer/testingtesting/DThree/datasetBarChart.csv", function(rows) {
for (x in rows) {
if (rows[x].group == group) {
ds.push(rows[x]);
}
}
}
return ds;
}
这是另一次失败的尝试
function datasetBarChosen(group) {
var ds = [];
d3.csv("http://ourServer/testingtesting/DThree/datasetBarChart.csv", function(rows) {
ds = rows.map(function(d) {
//each d is one line of the csv file represented as a json object
if (d.group == group) {
return {
"group": d.group,
"category": d.category,
"measure": +d.measure
}
};
})
}
return ds;
}
…以下哪一项关闭?
functiondatasetbarselected(组、进程){//这可以进一步重构
var-ds=[];
d3.csv(“https://raw.githubusercontent.com/openmundi/world.csv/master/countries(204)_olympics.csv)
.row(d=>d[“代码”]==组?d:false)//仅获取代码==组的项目
.获取(过程);
}
函数doThisWithResult(错误,行){
console.log(行);
//在这里写下所有与返回数据相关的逻辑;
//或者从这里调用其他函数来传递数据
}
选择数据集(“ZIM”,doThisWithResult)代码>
检查。不可能从函数内部的异步调用返回值。你可以搜索我意识到这很简洁的原因,但是可以扩展到更详细的(d=>d[“code”]==group?d:false)
…我对js很生疏@为什么我添加了es5代码和一个链接来查看您自己的转换。根据您对问题的最初评论,我最终放弃了返回值的想法。虽然现在我正努力把每一个都嵌套在d3.csv中!代码中的“过程”是什么?是某种全局变量吗?不,process
是一个形式参数,当我们将doThisWithResult
函数作为实际参数传递时,process
变成doThisWithResult
。还要注意,这将通过引用传递,因为它是一个函数。让我在注释中解释一下。如果您想将所有操作都作为一个函数来完成,并且所有逻辑都在d3.csv(
)中,那么代码看起来会是什么样子?是否所有操作都需要进入。get(…)
?