JavaScript:推送嵌套对象键值对

JavaScript:推送嵌套对象键值对,javascript,json,push,key-value,spread-syntax,Javascript,Json,Push,Key Value,Spread Syntax,我从Firebase获取JSON数据,并希望以不同的方式转换数据。我的问题是如何将嵌套对象键值对推入单个对象 这是我的密码 const postData = []; for (const key in data) { postData.push({ id: key, postComments: data[key].hasOwnProperty('comments') ? { id: Object.keys(data[key].comments),

我从Firebase获取JSON数据,并希望以不同的方式转换数据。我的问题是如何将嵌套对象键值对推入单个对象

这是我的密码

const postData = [];

for (const key in data) {
  postData.push({
   id: key,
   postComments: data[key].hasOwnProperty('comments')
     ? {
         id: Object.keys(data[key].comments),
         ...Object.values(data[key].comments),
       }
     : [],
   ...data[key]
  });
};

console.log(postData);
我目前得到:

{id: "-M_Spc3mBWVkUWKAAk_u", likes: 0, day: 22, month: 3,
     comments: {
       -M_McCXxZuoF60tmcKCV: {likes: 12, day: 23, month: 3}
       -M_Mc93EsXFxA_OS7g6Q: {likes: 234, day: 22, month: 3}
     }
     postComments: [
       0: {likes: 12, day: 23, month: 3}
       1: {likes: 234, day: 22, month: 3}
       id: ['-M_McCXxZuoF60tmcKCV', '-M_Mc93EsXFxA_OS7g6Q']
     ]
 }
我希望数据输出:

{id: "-M_Spc3mBWVkUWKAAk_u", likes: 0, day: 22, month: 3,
     comments: {
       -M_McCXxZuoF60tmcKCV: {likes: 12, day: 23, month: 3}
       -M_Mc93EsXFxA_OS7g6Q: {likes: 234, day: 22, month: 3}
     }
     postComments: [
       0: {id: "-M_McCXxZuoF60tmcKCV", likes: 12, day: 23, month: 3}
       1: {id: "-M_Mc93EsXFxA_OS7g6Q", likes: 234, day: 22, month: 3}
     ]
 }

我已经为此挣扎了几天。任何帮助都将不胜感激。谢谢。

谢谢你让我思考你的.map答案。我不知道我怎么没想到。我一定是累坏了,哈哈。这是我一直在寻找的答案

  for (const key in data) {
    postData.push({
      id: key,
      postComments: data[key].hasOwnProperty("comments")
        ? Object.entries(data[key].comments).map((k) => ({
            id: k[0],
            ...k[1],
          }))
        : [],
      ...data[key],
    });
  }

您的json输入数据是什么样子的?您可以发布原始数据对象吗?这将使您更容易了解如何转换数据。在“我当前正在获取”
postComments
中,不能有id属性,因为它是一个数组。你能发布原始数据对象吗?用注释obj更新。很抱歉,丢失了该数据点。