使用d3获取对象的值

时间:2017-06-20 15:32:20

标签: javascript arrays d3.js

您好,我刚刚进入d3。现在我有了这个数组:

    var data =
    [
     {name: "Tim", grades: [2.0, 2.2, 1.7]},
     {name: "Mike", grades: [1.7, 1.3, 2.7]},
     {name: "Max", grades: [3.0, 2.0, 2.3]},
     {name: "Peter", grades: [1.5, 2.0, 1.5]}
    ];

我只需要单独数组中的所有名称。有没有" d3-way"去做这个?我试过d3.values但是无法让它工作。

任何帮助都是apreciated

1 个答案:

答案 0 :(得分:1)

简单的javascript就足够了; d3并没有真正为这项特殊任务添加任何便利。您经常会在d3代码中看到array.map(),因为它正在执行您正在寻找的工作:



var data = [
  {name: "Tim", grades: [2.0, 2.2, 1.7]},
  {name: "Mike", grades: [1.7, 1.3, 2.7]},
  {name: "Max", grades: [3.0, 2.0, 2.3]},
  {name: "Peter", grades: [1.5, 2.0, 1.5]}
];
    
var names = [];

names = data.map(function(d) { return d.name; })
    
console.log(names);




以下是array.map()方法的说明:

  

map()方法创建一个新数组,其中包含调用a的结果   为调用数组中的每个元素提供了函数。

如果你真的想使用d3来达到同样的效果,可以使用d3.map()(参见this answerAPI documentation)。您可以使用d3.map()的.keys()方法获取密钥列表:



var data = [
  {name: "Tim", grades: [2.0, 2.2, 1.7]},
  {name: "Mike", grades: [1.7, 1.3, 2.7]},
  {name: "Max", grades: [3.0, 2.0, 2.3]},
  {name: "Peter", grades: [1.5, 2.0, 1.5]}
];

console.log(d3.map(data, function(d) { return d.name}).keys());

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.5.0/d3.min.js"></script>
&#13;
&#13;
&#13;