const arr = Object
.entries(obj)
.reduce((acc, [ k, values ]) => (
values.forEach((v, i) => (acc[i] ??= {})[k] = v),
acc
), []);
или
const keys = Object.keys(obj);
const arr = obj[keys[0]]?.map((_, i) => {
return Object.fromEntries(keys.map(k => [ k, obj[k][i] ]));
}) ?? [];
или
const zip = (arrs, defaultValue = null) =>
Array.from(
{ length: Math.max(...arrs.map(n => n.length)) },
(_, i) => arrs.map(n => i < n.length ? n[i] : defaultValue)
);
const combine = (keys, values, defaultValue = null) =>
keys.reduce((acc, n, i) => (
acc[n] = i < values.length ? values[i] : defaultValue,
acc
), {});
const arr = Array.from(
zip(Object.values(obj)),
combine.bind(null, Object.keys(obj))
);