gpt4 book ai didi

javascript - 为什么使用keys过滤器而不是columns.slice()?

转载 作者:行者123 更新时间:2023-11-29 16:43:52 25 4
gpt4 key购买 nike

作者为什么使用

d3.keys(cars[0]).filter...

而不是使用

cars.columns.slice(1)

..?该切片有效地返回相同的信息,而无需执行下面的任何逻辑。

  var x = d3.scale.ordinal().rangePoints([0, width], 1),
y = {};

// Extract the list of dimensions and create a scale for each.
x.domain(dimensions = d3.keys(cars[0]).filter(function(d) {
return d != "name" && (y[d] = d3.scale.linear()
.domain(d3.extent(cars, function(p) { return +p[d]; }))
.range([height, 0]));
}));

这方面的数据是

name,economy (mpg),cylinders,displacement (cc),power (hp),weight (lb),0-60 mph (s),year
AMC Ambassador Brougham,13,8,360,175,3821,11,73
AMC Ambassador DPL,15,8,390,190,3850,8.5,70
AMC Ambassador SST,17,8,304,150,3672,11.5,72

来源:https://bl.ocks.org/mbostock/1341021

最佳答案

该代码的作者是 D3 的创建者。当然,他可能更喜欢第二个片段。但是,该代码使用的是 D3 v3.x,并且该版本的 D3 中的数据数组中没有 columns 属性。

让我们在下面的代码片段中看到这一点。

首先,使用 D3 v3.x:

var data = d3.csv.parse(d3.select("#csv").text());

console.log("using d3.keys: " + d3.keys(data[0]));
console.log("using data.columns: " + data.columns);
pre{
display: none;
}
<script src="https://d3js.org/d3.v3.min.js"></script>
<pre id="csv">name,economy (mpg),cylinders,displacement (cc),power (hp),weight (lb),0-60 mph (s),year
AMC Ambassador Brougham,13,8,360,175,3821,11,73
AMC Ambassador DPL,15,8,390,190,3850,8.5,70
AMC Ambassador SST,17,8,304,150,3672,11.5,72</pre>

您可以看到 d3.keys(data[0]) 有效,而 data.columns 返回未定义。

现在使用 D3 v4.x:

var data = d3.csvParse(d3.select("#csv").text());

console.log("using d3.keys: " + d3.keys(data[0]));
console.log("using data.columns: " + data.columns);
pre{
display: none;
}
<script src="https://d3js.org/d3.v4.min.js"></script>
<pre id="csv">name,economy (mpg),cylinders,displacement (cc),power (hp),weight (lb),0-60 mph (s),year
AMC Ambassador Brougham,13,8,360,175,3821,11,73
AMC Ambassador DPL,15,8,390,190,3850,8.5,70
AMC Ambassador SST,17,8,304,150,3672,11.5,72</pre>

d3.keys(data[0])data.columns 都可以工作,并给出相同的结果。

关于javascript - 为什么使用keys过滤器而不是columns.slice()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42992674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com