Как сделать массив из объекта Firebase

Есть такой объект:

const obj = {
  "09-15-2020": {
    "-MI00bHxG-FzygcZvr65": {
      "date": "09-15-2020",
      "name": "запись3"
    }
  },
  "09-20-2020": {
    "-MI-wzaMeXwcuCWA7ozB": {
      "date": "09-20-2020",
      "name": "запись2"
    },
    "-MI04gt-L6jTL0MEX-2l": {
      "date": "09-20-2020",
      "name": "запись4"
    }
  },
  "09-24-2020": {
    "-MI-eLufvbdiZvcOg-Ou": {
      "date": "09-24-2020",
      "name": "запись1"
    }
  }
}

Как мне сделать такой массив из этого объекта?

const obj = [
  {date: "09-20-2020", id: "-MI-wzaMeXwcuCWA7ozB", name: "запись2"},
  {date: "09-24-2020", id: "-MI-eLufvbdiZvcOg-Ou", name: "запись1"},
  {date: "09-20-2020", id: "-MI04gt-L6jTL0MEX-2l", name: "запись4"},
  {date: "09-15-2020", id: "-MI00bHxG-FzygcZvr65", name: "запись3"}
];

У меня получилась только такая странная штука:

const obj = {
  "09-15-2020": {
    "-MI00bHxG-FzygcZvr65": {
      "date": "09-15-2020",
      "name": "запись3"
    }
  },
  "09-20-2020": {
    "-MI-wzaMeXwcuCWA7ozB": {
      "date": "09-20-2020",
      "name": "запись2"
    },
    "-MI04gt-L6jTL0MEX-2l": {
      "date": "09-20-2020",
      "name": "запись4"
    }
  },
  "09-24-2020": {
    "-MI-eLufvbdiZvcOg-Ou": {
      "date": "09-24-2020",
      "name": "запись1"
    }
  }
}

const res = Object.keys(obj).map(key => ({...obj[key], id: key}));
console.log(res);
.as-console-wrapper, .as-console {
  min-height: 100vh;
}


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

Автор решения: Yaant

const obj = {
  "09-15-2020": {
    "-MI00bHxG-FzygcZvr65": {
      "date": "09-15-2020",
      "name": "запись3"
    }
  },
  "09-20-2020": {
    "-MI-wzaMeXwcuCWA7ozB": {
      "date": "09-20-2020",
      "name": "запись2"
    },
    "-MI04gt-L6jTL0MEX-2l": {
      "date": "09-20-2020",
      "name": "запись4"
    }
  },
  "09-24-2020": {
    "-MI-eLufvbdiZvcOg-Ou": {
      "date": "09-24-2020",
      "name": "запись1"
    }
  }
}

let result = Object.values(obj).reduce((acc, item) => {
  Object.keys(item).forEach(key => {
    let {date, name} = item[key];  
    let id = key;
    acc.push({date, id, name});
  })
  return acc;
}, []);
console.log(result);

→ Ссылка