так же, как вы удаляете дубликаты из любого другого ArrayList ...
Например:
tmp.stream().distinct().collect(Collectors.toList());
Примечание: предполагается, что элементы списка реализуют подходящий метод equals
. Как они должны.
Я преобразовал бы массив маркеров к паре значения ключа и затем циклу, который возражает свойствам.
var markers = [{"language":"Hungarian","group":"a", "value":"yes"},
{"language":"English", "group":"a", "value":"yes"},
{"language":"Ewe", "group":"b", "value":"no"},
{"language":"French", "group":"c", "value":"NA"}];
var uniqueGroups = {};
$.each(markers, function() {
uniqueGroups[this.group] = this.value;
});
затем
$.each(uniqueGroups, function(g) {
$('<p>').html('<img src="http://mysite/group' + g + '.png\" />' + this).appendTo('#legend-contents');
});
или
for(var g in uniqueGroups)
{
$('<p>').html('<img src="http://mysite/group' + g + '.png\" />' + uniqueGroups[g]).appendTo('#legend-contents');
}
Этот пример кода перезаписывает уникальное значение с последним значением в цикле. Если Вы хотите использовать первое значение вместо этого, необходимо будет выполнить некоторую условную проверку, чтобы видеть, существует ли ключ.
Посмотрите это - Лучший способ запросить назад уникальные значения атрибута в массиве JavaScript объектов?
Вам просто нужно изменение, которое проверяет на 2 значения, а не 1.
Как насчет чего-то более универсального?
function getDistinct(o, attr)
{
var answer = {};
$.each(o, function(index, record) {
answer[index[attr]] = answer[index[attr]] || [];
answer[index[attr]].push(record);
});
return answer; //return an object that has an entry for each unique value of attr in o as key, values will be an array of all the records that had this particular attr.
}
Не только такая функция возвратила бы все отличные значения, которые Вы указываете, но она также сгруппирует их, если необходимо получить доступ к ним.
В Вашем образце Вы использовали бы:
$.each(getDistinct(markers, "group"), function(groupName, recordArray)
{ var firstRecord = recordArray[0];
$('<p>').html('<img src="http://mysite/group' + groupName+ '.png\" />' + firstRecord.value).appendTo('#legend-contents');
}