-4

I have following Array

var x = [
  '{"id":"item1","val":"Items"}',
  '{"id":"item1","val":"Items"}',
  '{"id":"item2","val":"Items"}',
  '{"id":"item2","val":"Items"}',
  '{"id":"item3","val":"Items"}',
  '{"id":"item2","val":"Items"}'
];

I want create unique array by id key like following:

[
  '{"id":"item1","val":"Items"}',
  '{"id":"item2","val":"Items"}',
  '{"id":"item3","val":"Items"}'
];
Mehul Mali
  • 3,084
  • 4
  • 14
  • 28

3 Answers3

2

You can use array.filter

var x = [
  '{"id":"item1","val":"Items"}',
  '{"id":"item1","val":"Items"}',
  '{"id":"item2","val":"Items"}',
  '{"id":"item2","val":"Items"}',
  '{"id":"item3","val":"Items"}',
  '{"id":"item2","val":"Items"}'
];

var unique = x.filter(function(elem, index, self) {
    return index == self.indexOf(elem);
})

console.log(unique);
Sajeetharan
  • 216,225
  • 63
  • 350
  • 396
0

If you could use jQuery:

var obj = {};
$.each(x,function(index,val){
 var temp = JSON.parse(val);
 obj[temp.id] = val;
})

var tempArray = [];

for(var i in obj){
tempArray.push(obj[i])
}

console.log(tempArray);
Nitesh
  • 1,490
  • 1
  • 12
  • 20
0

ES6 has been officially published one and half years ago, why not give it a try?

var unique = [...new Set(x)]

Set to remove the duplicates, ... to spread members in an iterable.

Leo
  • 13,428
  • 5
  • 43
  • 61