-3

I am trying to get unique values I can add to a select tag from my JSON.

My JSON:

[
{
    "active_subscribers": 11158,
    "date_x": "2018-11-21",
    "segment": "e077"
},
{
    "active_subscribers": 11158,
    "date_x": "2018-11-21",
    "segment": "e099"
},
{
    "active_subscribers": 11156,
    "date_x": "2018-11-22",
    "segment": "e079
},
{
    "active_subscribers": 11156,
    "date_x": "2018-11-22",
    "segment": "e079"
}
]

I want to get unique segment

My expected result:

  • e077
  • e099
  • e079
nb_nb_nb
  • 1,243
  • 11
  • 36
  • Lots and lots of similar questions on this site..what have you tried? – charlietfl Nov 29 '18 at 17:12
  • One dupe, looking for a more recent one: https://stackoverflow.com/questions/20480391/get-unique-objects-from-array-based-on-single-attribute – Kevin B Nov 29 '18 at 17:15
  • Look into 'map' to get only the segment values, and then look at https://stackoverflow.com/questions/1960473/get-all-unique-values-in-a-javascript-array-remove-duplicates – user247702 Nov 29 '18 at 17:16

1 Answers1

-1

You can loop through each element and keep pushing them to an array after checking if element already exists in array or not.

Use Array.forEach to loop and Array.indexOf to check if element already exists in array or not.

var x = [
{
    "active_subscribers": 11158,
    "date_x": "2018-11-21",
    "segment": "e077"
},
{
    "active_subscribers": 11158,
    "date_x": "2018-11-21",
    "segment": "e099"
},
{
    "active_subscribers": 11156,
    "date_x": "2018-11-22",
    "segment": "e079"
},
{
    "active_subscribers": 11156,
    "date_x": "2018-11-22",
    "segment": "e079"
}]


var unique = [];
x.forEach(function(e){
 if(unique.indexOf(e.segment) == -1){
  unique.push(e.segment);
 }
})

console.log(unique);
Atul Sharma
  • 9,397
  • 10
  • 38
  • 65