0

How can i distinct same object data value using Javascript? [ES15/ES16]

for the given data value

[{Zone: "2"},
{Zone: "4"},
{Zone: "4"},
{Zone: "6"},
{Zone: "1"},
{Zone: "2"},
{Zone: "3"},
{Zone: "3"},
{Zone: "4"},
{Zone: "4"}]

after it will distinct it will return

[{Zone: "1"},
 {Zone: "2"},
 {Zone: "2"},
 {Zone: "3"},
 {Zone: "4"},
 {Zone: "6"}]
Jydon Mah
  • 383
  • 1
  • 9
  • 29

2 Answers2

1

One possible approach:

var arr = [{Zone: "2"}, {Zone: "4"}, {Zone: "4"}, {Zone: "6"}, {Zone: "1"}, {Zone: "2"}, {Zone: "3"}, {Zone: "3"}, {Zone: "4"}, {Zone: "4"}]

var resp = [...new Set(arr.map(({ Zone }) => Zone))].sort().map(x => ({Zone: x}));
console.log(resp);
.as-console-wrapper { max-height: 100% !important; top: 0; }

For this new approach you can map our resp above, using filter by Zones in your original array, as:

var arr = [{Zone: "2" , Assign: "1"}, {Zone: "4", Assign: "2"}, {Zone: "4", Assign: "3"}, {Zone: "6", Assign: "4"}, {Zone: "1", Assign: "5"}, {Zone: "2", Assign: "6"}, {Zone: "3", Assign: "7"}, {Zone: "3", Assign: "8"}, {Zone: "4", Assign: "9"}, {Zone: "4", Assign: "10"}]

var resp = [...new Set(arr.map(({ Zone }) => Zone))].sort().map(x => ({Zone: x}));

var newresp = resp.map(({ Zone }) => {
  var assigns = arr.filter(x => x.Zone == Zone).map(x => x.Assign);
  return {
    Zone: Zone,
    Assign: assigns
  }
})
console.log(newresp)
.as-console-wrapper { max-height: 100% !important; top: 0; }
guijob
  • 4,413
  • 3
  • 20
  • 39
  • thanks @guijob this works fine :) – Jydon Mah Mar 12 '18 at 05:54
  • One last thing sir, what if i got some additional object value. like {Zone: "2", Assign: 1} how can i also return the "Assign: 1" value? – Jydon Mah Mar 12 '18 at 06:06
  • it depends, for every `zone: 2`, will `assign: 1`? – guijob Mar 12 '18 at 06:09
  • nope it should pass to zone for every zone that is equal to it. if the object has same zone but different in assign it will return to `[{zone:2, assignnumber: [assign: 1, assign: 2] }]` ... its like re creating new object and pass the value to it. – Jydon Mah Mar 12 '18 at 06:14
  • Sorry for this, it is already out of my questions but it will really help me understand how objects works and to manipulate them.. many thanks in advance sir :) – Jydon Mah Mar 12 '18 at 06:15
  • No prob, I'm here to learn as well. I've just edited my post covering this new problem :) – guijob Mar 12 '18 at 06:25
  • Thanks a lot, you save my day :) – Jydon Mah Mar 12 '18 at 06:49
0
var lookup = {};
var items = [{Zone: "2"},
{Zone: "4"},
{Zone: "4"},
{Zone: "6"},
{Zone: "1"},
{Zone: "2"},
{Zone: "3"},
{Zone: "3"},
{Zone: "4"},
{Zone: "4"}];
var result = [];

for (var item, i = 0; item = items[i++];) {
  var zone = item.Zone;

  if (!(zone in lookup)) {
    lookup[zone] = 1;
    result.push(zone);
  }
}
Gaurang Dave
  • 3,956
  • 2
  • 15
  • 34