如何在D3.js中从csv文件创建嵌套对象数组

How to create an array of nested objects from a csv file in D3.js?

本文关键字:文件创建 嵌套 对象 数组 csv 中从 D3 js      更新时间:2023-09-26

这个问题使用的数据与我之前的一个问题相同,但问题不同。我有一个csv文件,看起来像这样:

name,score,date
Bob,93,2014
Bob,85,2015
Barry,70,2015
...

没有两个人有相同的名字,但是一个人可以有多个条目。我如何在d3.csv回调函数中创建一个像这样的数组?:

[{name: "Bob", values: [
   {score: 93, date: 2014},
   {score: 85, date: 2015}]}
 {name: "Barry", values: [
   {score: 70, date: 2015}]},
...

通常情况下,我将能够做到这一点与纯javascript,但访问属性值与arrayName[objectIndex].objectPropertyName不工作在d3回调函数。

d3.nest()函数,将您的CSV数据转换为键值对。查看这个plnkr链接以查看控制台中的对象。要获得最小的最大数据,请参阅更新后的plnkr。

d3.csv("data.csv", function(error, data) {
    console.log(data);
    var updated = d3.nest().key(function(d) {
        return d.name;
    }).sortKeys(d3.ascending).entries(data);
    console.log(updated);
})