JavaScript中定义的.data(xx.map(函数(d))…)的概念在哪里?
很抱歉标题含糊不清(我稍后会更新它,我也会更新标签)。在我试图理解的一些代码中,我发现了以下内容:JavaScript中定义的.data(xx.map(函数(d))…)的概念在哪里?,javascript,d3.js,Javascript,D3.js,很抱歉标题含糊不清(我稍后会更新它,我也会更新标签)。在我试图理解的一些代码中,我发现了以下内容: var map = svg.append("svg") .attr({x: 10, y: 10) .selectAll("path") .data(cl.map(function(d) { // ???? return d3.range(d.x.length).map(function(i) { return {x: d.x[i], y: d.y[i]};})
var map = svg.append("svg")
.attr({x: 10,
y: 10)
.selectAll("path")
.data(cl.map(function(d) { // ????
return d3.range(d.x.length).map(function(i) {
return {x: d.x[i], y: d.y[i]};});}))
.enter().append("svg:path")
.attr("d", lineMap)
.style("fill", "none")
.style("stroke", "darkgreen")
.style("stroke-width", 1);
cl
是一组作为路径连接的等高线数据。我的问题是关于我标记的部分????。我理解这在一般意义上,甚至是细节上的作用。由于我对这些东西不熟悉,我想知道.data
和.map
的思想是在哪里被记录的,它们属于哪种语言(JavaScript?JSON?)。我环顾四周,在谷歌搜索“地图数据”时,要找到答案有点困难!另外,在大多数JavaScript函数中,d概念似乎是必需的名称吗?或者只是定制?这里有几个指针:
.map
是一个javascript数组函数(注意d3.array也有一个map函数),它返回一个新数组,结果是为原始数组中的每个元素调用回调函数
.data
是d3概念,是将数据集绑定到选择的方法
希望这有帮助。语言是javascript,
data
和map
函数是d3.js自己的。您可以在api文档和中找到关于它们的更多信息。data
函数将数据连接到selectAll调用生成的选定元素中。map
函数将数据嵌套到您需要的表单中,在本例中是line函数所期望的。非常感谢@user1614080。我曾经看过nest.map
,但是被nest
部分抛弃了-我不认为它的应用更一般。非常感谢。@user1614080在问题的代码中,它实际上是Javascript的.map()
d3.range()
返回一个普通的Javascript数组,从OP的描述来看,cl
。@Lars是的,我真的以为OP在做类似的事情d3.nest.key(函数(d){return d.some_name;})。条目(some_数组)代码>。OP不是,尽管您可以在这里使用它来生成line function.OP的数据。在阅读了所有这些伟大的链接之后,我发现nest
基本上用于对现有数据进行子集和排序。我的示例不需要这样做,因为我的数据是随时可以传递的:一个带有x和y标签的数组数组,[…],[…],…],因此不需要nest
,而嵌套的map
匿名函数在如何迭代整个数据集方面非常有意义。谢谢大家。链接到alignedleft.com对解释这一点非常有帮助。