-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
  • 2,804
  • 4
  • 13
  • 27

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
  • 203,447
  • 57
  • 330
  • 376
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,394
  • 1
  • 12
  • 18
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
  • 12,690
  • 5
  • 39
  • 59