【问题标题】:JavaScript: Pushing nested object key value pairsJavaScript:推送嵌套对象键值对
【发布时间】:2021-08-17 01:13:31
【问题描述】:

我正在从 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}
     ]
 }

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

【问题讨论】:

  • 你的 json 输入数据是什么样子的?
  • 能否请您发布原始数据对象?它将更容易弄清楚如何转换数据。
  • 在您的“我正在获取”中,postComments 不能有 id 属性,因为它是一个数组。能否请您发布原始数据对象?
  • 用 cmets obj 更新。很抱歉错过了那个数据点。

标签: javascript json push key-value spread-syntax


【解决方案1】:

感谢 ulou 让我思考您的 .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],
    });
  }

【讨论】:

    猜你喜欢
    • 2021-10-28
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多