Вы можете уменьшить массив до Карта .Для каждого объекта извлеките пару ключ / значение с помощью Object.entries()
.Если ключ карты (например, apple
) уже существует, используйте значение в качестве ключа новой записи карты и исходный ключ в качестве значения.Затем вы можете преобразовать его обратно в массив, используя Array.from()
, и переключить ключи и значения:
const data = [{fruit1:"apple"},{fruit2:"banana"},{fruit3:"apple"}];
const result = Array.from(
data.reduce((m, o) => {
const [k, v] = Object.entries(o)[0];
return m.has(v) ? m : m.set(v, k);
}, new Map()),
([k, v]) => ({ [v]: k })
);
console.log(result);