Преобразовать из массива объектов другой массив с объектами

Застопорился на таком моменте, знающих прошу помочь(

Мне нужно из такого массива:

const items = [
  { label: 'YouTube', value: 'YouTube' },
  { label: 'YouTube', value: 'YouTube' },
  { label: 'YouTube', value: 'YouTube' },
  { label: 'Вконтакте', value: 'Вконтакте' },
  { label: 'Вконтакте', value: 'Вконтакте' },
]

Получить такой массив:

const items = [
  { label: 'YouTube', value: 'YouTube' },
  { label: 'Вконтакте', value: 'Вконтакте' }
]

Как только не пытался, не выходит(


Ответы (2 шт):

Автор решения: Aziz Umarov

Может так попробовать

const items = [


{ label: 'YouTube', value: 'YouTube' },
  { label: 'YouTube', value: 'YouTube' },
  { label: 'YouTube', value: 'YouTube' },
  { label: 'Вконтакте', value: 'Вконтакте' },
  { label: 'Вконтакте', value: 'Вконтакте' },
];

let result = items.reduce((acc,item) => { 
  let isExist = acc.filter(item2=>(item2.label==item.label) && (item2.value==item.value));
  if (!isExist) acc.push(item);
  return acc;}, []);

console.log(result);
→ Ссылка
Автор решения: vsemozhebuty

Если порядок ключей гарантированно одинаков, можно ещё так:

const items = [
  { label: 'YouTube', value: 'YouTube' },
  { label: 'YouTube', value: 'YouTube' },
  { label: 'YouTube', value: 'YouTube' },
  { value: 'Вконтакте', label: 'Вконтакте' },
  { value: 'Вконтакте', label: 'Вконтакте' },
];

const dedupedItems1 = [...new Set(items.map(obj => JSON.stringify(obj)))]
  .map(str => JSON.parse(str));

console.log(dedupedItems1);

→ Ссылка