我可以在D3选择中调用indexOf吗
Can I call indexOf within a D3 selection?
我正在使用D3制作条形图,D3使用数字数组dataset[]
生成并设置条形图的高度。
我有一部分代码,它在鼠标悬停条形元素时生成工具提示。
d3.select("#tooltip")
.style("left", xPosition + "px")
.style("top", yPosition + "px")
.select("#share-value")
.text(d)
.select("#month-now")
.text(dataset.indexOf(d));
console.log(dataset.indexOf(d));
text(d)
显示正确,这是dataset[d]
的值。但是,我也想在dataset
中显示元素d
的索引。console.log(dataset.indexOf(d))
会正确记录索引,但该索引不会显示在工具提示中。为什么会这样?
编辑:我也试过
.text(function (d, i) {
return i;
});
根据D3 Selections,但它似乎仍然没有返回当前数据的索引。
我假设您的数据集是一个对象数组。所以你应该使用这样的东西:
//imagine your dataset like this:
var dataset = [{name:"cyril", age: 34}, {name:"Tow", age: 3}]
因此,当你试图获得索引时,你必须这样做:
dataset.findIndex(function(d){ return "cyril" == d.name})
//this will return 0 and for Tow return 1 and "Bow" will return -1
因此,在您的代码中,它将是这样的:
d3.select("#tooltip")
.style("left", xPosition + "px")
.style("top", yPosition + "px")
.select("#share-value")
.text(d)
.select("#month-now")
.text(function(d1){dataset.findIndex(function(d){ return YOUR_CONDITION})});
希望这能有所帮助!
mouseover监听器的第二个参数将为您提供d的索引。
.on("mouseover",function(d,i){ //i is the index of d in the dataset
d3.select("#tooltip")
.style("left", xPosition + "px")
.style("top", yPosition + "px")
.select("#share-value")
.text(d)
.select("#month-now")
.text(i);
});
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- node.js:setInterval()正在跳过调用
- 如何在单击复选框后调用控制器方法
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 对象不支持在调用 indexOf 定义的数组时 IE8 中未定义的此属性或方法
- Javascript无法调用方法'indexOf'的未定义
- “未捕获的类型错误:无法调用未定义的方法'indexOf'”时选择jqgrid行
- 返回未捕获类型错误的 Javascript:无法调用未定义的方法 'indexOf'
- jQuery .each 返回 TypeError: 无法调用未定义的方法 'indexOf'
- 我可以在D3选择中调用indexOf吗
- 未捕获的类型错误:无法调用未定义的方法“indexOf”