2016-03-24 9 views
0

Bazı değerlerin 0 olduğu arka uçtan veri alıyorum. Bu değerler için daire oluşturmak istemiyorum.d3js - diziyi değerlerle filtrelemek ve verilere geçirmek nasıl?

Anladığım kadarıyla, bir filtre kullanmam gerekiyor, ancak bunu nasıl kullanacağım konusunda hiçbir fikrim yok. bir dizidir

var circles = city.selectAll("circle") 
         .data(function(d) { 
          return d.values //this is a array length 20 how to filter that? i need only with values more than 0 
         }) 
         .enter() 
         .append("circle") 
         .attr("r", 3.5) 
         .attr("cx", function(d, i) { 
          return x(d.date) 
         }) 
         .attr("cy", function(d) { 
          return y(d.temperature) 
         }) 
         .style('cursor', 'pointer') 
         .attr("fill", "transparent") 
         .attr("stroke", "yellow") 
         .attr("stroke-width", 0); 

cevap

2

d.values, bu öğeden 0 farklı tüm değerleri ayıklamak için Array.prototype.filter() kullanabilirsiniz:

İşte benim kodudur. Aşağıdakiler yalnızca sıfırdan farklı değerler bağlamak ve bunlar için sadece çevreler oluşturacaktır:

.data(function(d) { 
    return d.values.filter(function(v) { return v != 0; }); 
}) 
-1

Öncelikle, aksi hiçbir bağlama var, daha .data(dataFromBackend, function (d) { return d.values; }) gibi bir şey anlamına geldiğini tahmin ediyorum!

Neyse, açıklayan ve hiç gelmediğini 0-değerlerine sahip umursamazlar varsayımını yapıyoruz ne yapacağını, sadece yapabilirsiniz:

filteredData = backendData.filter(function (d) { 
    return d.value != 0; 
}); 

bir var .filterhere için ayrıntılı başvuru, ancak kısaca, 'daki her öğe için .filter'a iletilen işlev, her bir öğenin olağan şekilde d tarafından atıfta bulunulmasını gerektirir. Dönüş değeri, boole (true veya false) olmalıdır, ancak 'doğruluk' kullanarak, herhangi bir şeyle çalışacaktır. Herhangi bir elemanın işlevi için 'doğru' bir şey döndüren son diziye (örneğimde filteredData) dahil edilecek, herhangi bir elemanın işlevini döndürdüğü bir şey 'falsey' olmayacaktır.