Skip to content Skip to sidebar Skip to footer

How To Select Unique Values In D3.js From Data

I am using the following code to populate my Combobox using d3.js d3.csv('Results_New.txt', function(data) { dataset=data; d3.select('#road').selectAll('option') .data(data).enter(

Solution 1:

Filter your data retaining unique keys only by 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;});

Solution 2:

d3.map is deprecated - the d3 devs now recommend simply using JavaScript's built-in Array.map. (In fact the entire d3-collection module is now deprecated, with similar rationale for d3.set.)

Here's a concise and (I think) elegant way to do this in ES6, using Array.map, Set, and the spread operator ...:

let options = [...newSet(data.map(d => d.roadname))]; 
// optionally add .sort() to the end of that line to sort the unique values// alphabetically rather than by insertion order

d3.select('#road')
  .selectAll('option')
    .data(options)
  .enter()
    .append('option')
    .text(d => d)
    .attr('value', d => d);

Post a Comment for "How To Select Unique Values In D3.js From Data"