javascript - 如何避免访问 d3.js 中的属性

标签 javascript d3.js

这里是 d3.js 的新手。我试图访问每个数据的属性,但有些数据没有属性。当我尝试访问数据没有的属性时,我收到以下错误消息。

未捕获类型错误:无法读取属性

color(data[d.id][property])

var change = function() {
      val = d3.event.target.value;
      d3.selectAll("path").style("fill", function(d) {
        // in this case val might be the property of the data[d.id], so that i 
        // want to escape this case. 
        color(data[d.id][val]); // data is a global variable

      });
 }

我的问题是如何简单地跳过对该特定属性的访问以避免此类型错误?

提前致谢。

最佳答案

有几种方法可以检查该属性是否存在。其中之一是使用 ternary operator :

d3.selectAll("path").style("fill", function(d) {
    return data[d.id][val] ? color(data[d.id][val]) : "#ccc"
});

在那种情况下,如果属性存在,匿名函数将返回color(data[d.id][val]),如果不存在,它将返回# ccc(根据您的需要更改此颜色)。

关于javascript - 如何避免访问 d3.js 中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43669317/

相关文章:

JavaScript 类方法不起作用

javascript - 火狐插件: How can I paste clipboard to a textarea?

javascript - Express - 在单个请求中向浏览器发送页面和自定义数据?

javascript - 设置 d3 图表的 y 轴以适合最宽的标签?

javascript - 为什么这个 UrlFetch 函数不能正常工作?

javascript - 使用不同的数据加载 Handlebars js 部分

reactjs - 将事件处理程序附加到 nvd3 图表的标签

javascript - 将条形图数据链接到 d3 工具提示

javascript - HTM/CSS 干扰 D3.js

javascript - 如何将 D3 树布局的方向改变 90 度