JavaScript:推送嵌套对象键值对
Posted
技术标签:
【中文标题】JavaScript:推送嵌套对象键值对【英文标题】:JavaScript: Pushing nested object key value pairs 【发布时间】: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 更新。很抱歉错过了那个数据点。
【参考方案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],
);
【讨论】:
以上是关于JavaScript:推送嵌套对象键值对的主要内容,如果未能解决你的问题,请参考以下文章