Преобразовать из массива объектов другой массив с объектами
Застопорился на таком моменте, знающих прошу помочь(
Мне нужно из такого массива:
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);