Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从D3函数返回js数据集_Javascript_Asynchronous_D3.js - Fatal编程技术网

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(…)