Я пытаюсь сгруппировать массив объектов на основе указанного c поля (значения), а затем отсортировать их по определенным c типам:
var list = [
{value: 'fox', country: 'nl', type: 'animal', priority: 1},
{value: 'fox', country: 'be', type: 'animal', priority: 2},
{value: 'cat', country: 'de', type: 'animal', priority: 3},
{value: 'david', country: 'nl', type: 'human', priority: 4},
{value: 'marc', country: 'be', type: 'human', priority: 5},
{value: 'lola', country: 'de', type: 'human', priority: 6},
{value: 'tiger', country: 'nl', type: 'animal', priority: 7},
{value: 'koala', country: 'be', type: 'animal', priority: 8},
{value: 'tiger', country: 'nl', type: 'animal', priority: 9},
];
// output/result should be:
[
{value: 'fox', countries: ['nl', 'be'], type: 'animal', priority: 1},
{value: 'cat', countries: ['de'], type: 'animal', priority: 2},
{value: 'tiger', countries: ['nl'], type: 'animal', priority: 3},
{value: 'koala', contries: ['be'], type: 'animal', priority: 4},
{value: 'david', contries: ['nl'], type: 'human', priority: 1},
{value: 'marc', contries: ['be'], type: 'human', priority: 2},
{value: 'lola', contries: ['de'], type: 'human', priority: 3},
];
Я пытаюсь редуктор для удаления дубликатов, но мне не удается сгруппировать страны
list.reduce((accumulator, currentValue, index) => {
const {country, value} = currentValue;
if(!accumulator.some(item => item.value === currentValue.value)) {
accumulator.push({
value: currentValue.value,
countries: [accumulator.country].concat(currentValue.country)
})
}
return accumulator;
}, [])