У меня есть объект, содержащий другие объекты, такие как:
let foo = {
a: {
b: {},
c: {}
},
d: {
e: {}
}
};
Теперь я хочу преобразовать это в массив объектов, где ключи первых двух уровней образуют пару ключ/значение, например:
let transformedFoo = [
{ outer: 'a', inner: 'b' },
{ outer: 'a', inner: 'c' },
{ outer: 'd', inner: 'e' }
];
Мой текущий подход выглядит следующим образом:
let fooTransformed = [];
Object.keys(foo).forEach(function (outerKey) {
Object.keys(foo[outerKey]).forEach(function (innerKey) {
fooTransformed.push({
outer: outerKey,
inner: innerKey
});
});
});
Это работает, но я думаю, что это не "хорошо" (т.е. нехорошо иметь два вложенных цикла). Есть ли лучший способ для достижения этого (я могу себе представить, что есть довольно элегантное чисто функциональное решение, но я не могу думать о нем)?