首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在d3树代码中以指定单词结尾选择所有d.data.id?

如何在d3树代码中以指定单词结尾选择所有d.data.id?
EN

Stack Overflow用户
提问于 2017-05-21 05:48:52
回答 2查看 93关注 0票数 1

在收到my last question中的答案后,我可以以所需的方式修改d3树代码。

请想象一下,我有下面的flare.csv文件

代码语言:javascript
复制
A
A.A
A.A.B
A.A.C
A.B
A.B.C
A.C
A.C.D
A.D
A.D.A
A.D.B
A.D.D
A.E
A.E.A
A.E.B

然而,我遇到了另一个问题。为了给某些特定的节点分配颜色,建议应答者添加

代码语言:javascript
复制
.style("fill", function(d){
   return !d.parent ? "blue" : d.data.id === "A.D.B" ? "red" : 
"black";
})

这基本上将父节点的颜色更改为蓝色,将"A.D.B“的颜色更改为红色。

现在,正如您所看到的,我在字母“B”中有几个d.data.id结尾。例如,"A.D.B“、"A.E.B”和"A.A.B“。在html javascript代码中,对所有这些节点执行相同操作的最简单方法是什么,即将它们的颜色更改为红色,即所有IDS以字母“B”结尾。

在linux和Matlab中,可以使用"*B“来实现这一目标。因为我刚开始使用javascript,所以我需要您的帮助来解决这个问题。请注意,我正在处理大量的d.data.id,因此在代码中指定所有这些都非常耗时。因此,我正在寻找一个方便的方法。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-21 06:03:26

如果要将以data结尾的节点涂成红色,只需拆分字符串:

代码语言:javascript
复制
var array = d.data.id.split(".");

检查最后一个元素。就你假设的CSV而言:

代码语言:javascript
复制
return !d.parent ? "blue" : array[array.length-1] === "B" ? "red" : "black";

这将为以B结尾的任何ID涂上红色。

对于真实的bl.ocks (关于您的预编辑问题):

代码语言:javascript
复制
.style("fill", function(d){
    var array = d.data.id.split(".");
    return !d.parent ? "blue" : array[array.length-1] === "data" ? "red" : "black";
})

下面是更新的bl.ocks:https://bl.ocks.org/anonymous/bb3ff95151d3252597d52c917489dda2

票数 1
EN

Stack Overflow用户

发布于 2017-05-21 06:11:34

不是最好的答案,但你也可以.

向三元条件中添加逻辑运算符以包括其他索引。

代码语言:javascript
复制
.style("fill", function(d){
   return !d.parent ? "blue" : (d.data.id === "A.D.B" || d.data.id === "A.D.D") ? "red" : 
"black";
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44093615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档