处理d3.js中的可选数据

处理d3.js中的可选数据,d3.js,D3.js,如果某些部分是可选的,您将如何处理数据?例如,此数据: [ { width: 10, height: 20, margin: { top: 10, right: 10, bottom: 10: left: 10 } }, { width: 10, height: 20 } ] 因此,我只想在margin可用时附加一些SVG rect。我可以使用visibility属性来隐藏它,但这意

如果某些部分是可选的,您将如何处理数据?例如,此数据:

[
    {
        width: 10,
        height: 20,
        margin: { top: 10, right: 10, bottom: 10: left: 10 }
    },
    {
        width: 10,
        height: 20
    }
]
因此,我只想在
margin
可用时附加一些SVG rect。我可以使用visibility属性来隐藏它,但这意味着我有不必要的节点,必须编写空检查代码以避免javascript错误

var svgobj = svg.selectAll('.object').data(objects);

var svgobjEnter = svgobj.enter().append('g')
    .attr('class', 'object');

svgobjEnter.append('rect')
    .attr('class', 'margin');
    .attr('width', function(d) { return d.width + d.margin.left + d.margin.right; })
    .attr('height', function(d) { return d.height + d.margin.top + d.margin.bottom; })

您可以筛选数据以执行此操作:

svg.selectAll("rect")
   .data(objects.filter(function(d) { return d.margin != undefined; }))
   .enter()
   .append("rect")
// etc