2015-02-17 19 views
7

używam następujący kod, aby wypełnić moje ComboBox przy użyciu d3.jsJak wybrać unikalne wartości w d3.js z danych

d3.csv("Results_New.txt", function(data) { 
dataset=data; 
d3.select("#road").selectAll("option") 
.data(data).enter().append("option").text(function(d){return d.roadname;}).attr("value",function(d){return d.roadname;}); 
}); 

Istnieją różne wiersze o tej samej nazwie. Combobox zapełnia się tymi zduplikowanymi nazwami. Na przykład w wielu wierszach nazwa drogi to I-80. Ale w combobox chcę zobaczyć I-80 tylko raz. Jak mogę to zrobić?

+1

filtrować duplikatów z danych przed przekazaniem go do D3. –

+0

Jak mogę to zrobić. Czytam plik CSV i korzystam z danych odczytanych z pliku csv –

Odpowiedz

13

Filtrowanie danych mocujące unikatowych kluczy tylko d3.map

d3.select("#road").selectAll("option") 
    .data(d3.map(data, function(d){return d.roadname;}).keys()) 
    .enter() 
    .append("option") 
    .text(function(d){return d;}) 
    .attr("value",function(d){return d;}); 
+0

d3.map (dane, funkcja (d) {return d.roadname;}) działa nopt. Obecnie nie ma żadnych wartości w combobox –

+0

Czy muszę wykonać dalsze przetwarzanie przed użyciem d3.map (dane, funkcja (d) {return d.roadname;}) –

+0

Edytowałem mój kod jak wyżej. Po mapowaniu danych przy użyciu 'd3.map' zwracana jest tablica obiektów indeksowanych przez' roadname'. Wyodrębnienie 'keys()' da ci listę * czystych * nazw dróg. – ahmohamed

-3

Spróbuj this:

/* file.csv 
 
name_of_my_header 
 
mom 
 
dad 
 
brother 
 
sister 
 
dog 
 
*/ 
 
button.onclick = function() { 
 
    var s = d3.select("#road"); 
 
    d3.csv(prompt("URL please"), function(dataset){ 
 
     dataset.forEach(function(row) { 
 
      s.append("option").text(row["name_of_my_header"]); 
 
     }) 
 
    }) 
 
}
<select id="road"> 
 
</select> 
 
<button id="button">Is it?</button>