Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
D3.js 如何使用D3JS在.attr中写入if条件_D3.js_Polymer 1.0 - Fatal编程技术网

D3.js 如何使用D3JS在.attr中写入if条件

D3.js 如何使用D3JS在.attr中写入if条件,d3.js,polymer-1.0,D3.js,Polymer 1.0,我在函数中创建了两个if条件,但它只接受一个if条件并返回该条件。我需要同时执行这两个if条件,或者我们如何使用D3JS在.attr('x2',d=>self.x(0))之前写入条件 function updateLines(select) { if(data.filter(d => d.esp != null) || (d => d.esp == 0)){ return select .attr('y1', d => self

我在函数中创建了两个if条件,但它只接受一个if条件并返回该条件。我需要同时执行这两个if条件,或者我们如何使用D3JS在.attr('x2',d=>self.x(0))之前写入条件

function updateLines(select) {
    if(data.filter(d => d.esp != null) || (d => d.esp == 0)){ 
        return select
            .attr('y1', d => self.y(d.esp))
            .attr('y2', d => self.y(d.esp))
            .attr('x1', d => self.x(d.hour)-3)
            .attr('x2', d => self.x(d.hour)+3 + self.x.bandwidth())
    }

    if(data.filter(d => esp == null)){
        return select
            .attr('y1', d => self.y(d.esp))
            .attr('y2', d => self.y(d.esp))
            .attr('x1', d => self.x(0))
            .attr('x2', d => self.x(0))
        }
    }

检查应该在
.attr
级别进行,因为它将针对选择中的每个元素执行。您可以预先准备数据筛选器,并在
.attr
回调中检查它们:

function updateLines(select) {
  const nonNull = data.filter(d => d.esp !== null || d.esp === 0);


  select
    .attr('y1', d => self.y(d.esp))
    .attr('y2', d => self.y(d.esp))
    .attr('x1', d => nonNull.contains(d) ? self.x(d.hour)-3 : self.x(0))
    .attr('x2', d => nonNull.contains(d) ? self.x(d.hour)+3 + self.x.bandwidth() : self.x(0))
}

假设选择是使用
.data(data)
创建的,其中
data
updateLines
函数中使用的对象数组相同

但这并不能同时满足这两个语句。它只执行一个true或false。让我们以我的senario数据为例{null,21,null,45,null,0}。如果该值为null,则在特定的小时或x轴上隐藏图表,如果该值为0,则在y轴上显示。但现在它显示为null或0不满足null和0