Javascript 如何使用d3.csv区分第一行中的相同键

Javascript 如何使用d3.csv区分第一行中的相同键,javascript,csv,d3.js,Javascript,Csv,D3.js,d3.csv自动将第一行识别为密钥名。 然后,如果第一行包含相同的名称键,则无法读取所有数据,d3.csv只读取一列 csv示例(Z是相同的键) 我想读取与相同键对应的两个数据(Z,在本例中)。 也许我们无法使用d3.csv函数提取“10,11,12” 您能告诉我如何读取这两列吗?您是正确的,d3.csv将无法提取完整的数据 但是,如果您有自定义数据格式,则使用将数据作为文本文件加载。 然后,您可以使用自定义格式解析它 这将为您提供一个数组,您可以在其中查找列。根据@musicaly\u ut的

d3.csv
自动将第一行识别为密钥名。 然后,如果第一行包含相同的名称键,则无法读取所有数据,
d3.csv
只读取一列

csv示例(
Z
是相同的键) 我想读取与相同键对应的两个数据(
Z
,在本例中)。 也许我们无法使用
d3.csv
函数提取“10,11,12”


您能告诉我如何读取这两列吗?

您是正确的,
d3.csv
将无法提取完整的数据

但是,如果您有自定义数据格式,则使用将数据作为文本文件加载。 然后,您可以使用自定义格式解析它


这将为您提供一个数组,您可以在其中查找列。

根据@musicaly\u ut的答案,您可以执行以下操作:

d3.text("txt.csv", function(err, txt){
    var rows = d3.csv.parseRows(txt),
        header = rows.shift(),
        data = rows.map(function(r){
            var obj = {};
            r.forEach(function(c, i){
                if (!(header[i] in obj))
                    obj[header[i]] = c;
                else
                    obj[header[i]] +=  " " + c;
            });
            return obj;
        });
});
>> console.log(JSON.stringify(data));
[{"X":"1","Y":"4","Z":"7 10"},
 {"X":"2","Y":"5","Z":"8 11"},
 {"X":"3","Y":"6","Z":"9 12"}
] 
在这里,与使用
d3.csv
一样,您正在为csv文件的每一行创建一个对象,其中的键对应于列名。与
d3.csv
不同,如果两列具有相同的名称,则此方法仅将两列中的数据附加在一起(请参见下面的示例)

如果使用此方法输出生成的
数据
,则会得到以下结果:

d3.text("txt.csv", function(err, txt){
    var rows = d3.csv.parseRows(txt),
        header = rows.shift(),
        data = rows.map(function(r){
            var obj = {};
            r.forEach(function(c, i){
                if (!(header[i] in obj))
                    obj[header[i]] = c;
                else
                    obj[header[i]] +=  " " + c;
            });
            return obj;
        });
});
>> console.log(JSON.stringify(data));
[{"X":"1","Y":"4","Z":"7 10"},
 {"X":"2","Y":"5","Z":"8 11"},
 {"X":"3","Y":"6","Z":"9 12"}
]