Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3.js:访问函数';s输出_Javascript_D3.js_Callback - Fatal编程技术网

Javascript D3.js:访问函数';s输出

Javascript D3.js:访问函数';s输出,javascript,d3.js,callback,Javascript,D3.js,Callback,作为Javascript新手,我很难理解如何访问以下函数的输出: function dimensionLabels(d) { return __.dimensions[d].title ? __.dimensions[d].title : d; // dimension display names } 我所了解的是,当它作为回调函数在.text中传递时,它会成功返回一些显示在浏览器中的文本(例如“Header[n°1]”): 所以我假设dimensionLabels返回一些字符串,就好像

作为Javascript新手,我很难理解如何访问以下函数的输出:

function dimensionLabels(d) {
  return __.dimensions[d].title ? __.dimensions[d].title : d;  // dimension display names
}
我所了解的是,当它作为回调函数在.text中传递时,它会成功返回一些显示在浏览器中的文本(例如“Header[n°1]”):

所以我假设dimensionLabels返回一些字符串,就好像我用.text(“myString”)替换.text(dimensionLabels),原始文本(“Header[n°1]”)成功地替换为“myString”

但是,我需要做的是从维度标签访问文本并进行处理,例如使用:

.text(dimensionLabels.split('[', 2)) 
但这会产生以下错误:

TypeError:dimensionLabels.split不是一个函数


有人能描述一下上面的函数是如何工作的,以及我应该如何访问它的输出吗?

dimensionLabels
看起来它是一个函数,而不是一个字符串,它以字符串作为参数

然后,它看起来像是在查看属性的
\uuuuu
对象,这是一个数组,称为
维度
,然后查找索引
[d]
,该索引可能有一个属性
标题
用作其文本。如果不是,那么它只返回您给它的参数
d

因此,如果您试图使用它,您需要向它传递一个字符串,以返回
\uuu0.dimensions[d].title的结果,或者如果找不到它,则只返回字符串,可能类似于
dimensionsLabels(“someText”)
。然后,您将得到一个字符串,您可以对结果调用
.split()
,或者对整个结果调用:
dimensionsLabels(“someText”).split(“[”,2)


这样做的方式是对函数调用
.split()
,我认为,在大多数情况下,
.split()
是用于字符串的。

dimensionLabels
看起来它是一个函数,而不是字符串,将字符串作为参数

然后,它看起来像是在查看属性的
\uuuuuu
对象,这是一个数组,称为
维度
,然后查找索引
[d]
,该索引可能有一个属性
标题
用作其文本。如果没有,则它只返回您给它的参数
d

因此,如果您试图使用它,您需要向它传递一个字符串以返回
\uuu.dimensions[d].title的结果,或者如果找不到它,则只返回字符串,可能类似于
dimensionsLabels(“someText”)
。然后,您将得到一个字符串,您可以调用
.split()
关于结果,或者整个事情:
维度标签(“someText”).split(“[”,2)


这样做的方式是对函数调用
.split()
,我认为,在大多数情况下,
.split()
是用于字符串的。

.text
将函数作为参数,然后在内部调用它,并传递
d
(数据)因此,既然
.text
需要一个函数,只需创建自己的匿名函数并包装对
维度标签的调用即可:

.text(function(d){
  var string = dimensionLabels(d);
  return string.split('[', 2);
})
对评论的回应

d3
.text
方法可以接受字符串或返回字符串的函数。如果你给它一个字符串,它会将文本设置为该字符串。如果你给它一个函数,该函数不会立即被调用。相反,在引擎盖下,
d3
会稍后调用它。当它调用时,我t传入
d
参数,此
d
参数是绑定到该DOM块的数据。(在某些情况下,您的代码是通过
.data
调用进行数据绑定的)

调用
dimensionLabels(“myString”)
时会出现错误,原因如下:

__.dimensions[d].title
您有一个名为
\uuu
的对象,该对象的属性为
维度
。该属性是一个数组或可以索引到的对象(我不知道,因为您提供了足够的代码,我可以确定):


返回undefined。undefined将永远不会有名为
title
的属性。BAM,您将收到错误。

。text
将函数作为参数,然后在内部调用它,并传递
d
(数据)因此,既然
.text
需要一个函数,只需创建自己的匿名函数并包装对
维度标签的调用即可:

.text(function(d){
  var string = dimensionLabels(d);
  return string.split('[', 2);
})
对评论的回应

d3
.text
方法可以接受字符串或返回字符串的函数。如果你给它一个字符串,它会将文本设置为该字符串。如果你给它一个函数,该函数不会立即被调用。相反,在引擎盖下,
d3
会稍后调用它。当它调用时,我t传入
d
参数,此
d
参数是绑定到该DOM块的数据。(在某些情况下,您的代码是通过
.data
调用进行数据绑定的)

调用
dimensionLabels(“myString”)
时会出现错误,原因如下:

__.dimensions[d].title
您有一个名为
\uuu
的对象,该对象的属性为
维度
。该属性是一个数组或可以索引到的对象(我不知道,因为您提供了足够的代码,我可以确定):


返回undefined。undefined将永远不会有名为
title
的属性。BAM,您会收到错误信息。

谢谢!这确实很有效,但我仍然不确定我是否掌握了基本逻辑。脚本如何知道d是什么?运行dimensionLabels(d)在您建议的匿名函数中,它可以正常工作,但是如果我在外部运行它(例如,text(dimensionLabels(d)),它当然不会工作,尽管我觉得d在这两种情况下都没有指向任何东西。另外,如果我运行.text(dimensionLabels(“myString”)),我不应该基于函数的条件返回(如果