У меня есть следующий массив

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"}'
];

Я хочу создать уникальный массив с помощью ключа id, как показано ниже:

[
  '{"id":"item1","val":"Items"}',
  '{"id":"item2","val":"Items"}',
  '{"id":"item3","val":"Items"}'
];
-4
Mehul Mali 26 Дек 2016 в 10:30
2
 – 
Avnesh Shakya
26 Дек 2016 в 10:32
Является ли x массивом строк или объектов?
 – 
Hmahwish
26 Дек 2016 в 10:32

3 ответа

Вы можете использовать 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);
2
Sajeetharan 26 Дек 2016 в 10:36

Если бы вы могли использовать 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);
0
Nitesh 26 Дек 2016 в 10:37

ES6 был официально опубликован полтора года назад, почему бы не попробовать?

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

Set , чтобы удалить дубликаты, ... , чтобы распределить элементы в итеративном режиме.

0
Leo 26 Дек 2016 в 10:57