您好,我刚刚进入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
答案 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 answer和API 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;