Javascript 如何打印线生成器的结果?

Javascript 如何打印线生成器的结果?,javascript,d3.js,Javascript,D3.js,我有以下代码: valuelinePath = svg.append("path") .data([data]) .attr("class", "line2") .attr("d", valueLine) .attr("transform", "translate(42" + ", 70" + ")"); var newvalueLine = d3.line() .x(function(d) { return x(d.years);

我有以下代码:

valuelinePath = svg.append("path")
    .data([data])
    .attr("class", "line2")
    .attr("d", valueLine)
    .attr("transform", "translate(42" + ", 70" + ")");

var newvalueLine = d3.line()
      .x(function(d) {
        return x(d.years);
      })
      .y(function(d) {
        return y(d[cityName]);
      });

 valuelinePath
    .data([data])
    .attr("class", "line2")
    .attr("d", newvalueLine)
    .attr("transform", "translate(42" + ", 70" + ")")
    .style("display", null);

我假设newvalueline是字符串生成器生成的字符串,但不是,当我尝试调试newvalueline的值时,调试器告诉我它是一个函数

newvalueLine
ƒ t(t){var a,c,s,f=t.length,l=!1;for(null==i&&(u=o(s=ee())),a=0;a<=f;++a)!(a<f&&r(c=t[a],a,t))===l&&((l=!l)?u.lineStart():u.lineEnd()),l&&u.point(+n(c,a,t),+e(c,a,t));if(s)return u=null,s+""||null}
那么,如何获取newvalueLine的字符串表示形式以进行调试,而不必将其分配给valuelinePath属性并再次检索它呢?为什么它是一个函数而不是字符串

我读到的东西


我假设line生成器返回一个路径字符串,如上面的示例所示?否?

它是作为函数创建的,因为在您将数据发送给它之前,它实际上无法创建路径:

valuelinePath
    .data([data])
    .attr("class", "line2")
    .attr("d", newvalueLine) // This is when the path is actually created
这是D3工作方式的一部分,它是声明性的,将其视为您定义的一组规则,然后向其抛出数据以呈现图表


这样,如果数据不同,只需将新数据传递给它,生成器函数就会生成路径<代码>生成器函数是关键-这就是文档所指的内容。

要获取线生成器的返回值,即字符串,只需将数据数组传递给它即可。例如:

const data=d3.range(10.map)(d=>[d,d]);
const lineGenerator=d3.line();
console.log(lineGenerator(数据))
valuelinePath
    .data([data])
    .attr("class", "line2")
    .attr("d", newvalueLine) // This is when the path is actually created