我有两个聊天消息数组,每个数组代表给定日期的消息。我必须将这两个数组合并为一个具有相同日期格式的对象。该对象应包含来自两个数组的所有消息,并合并每个日期的消息。
数据如下:
const data1 = {
messages: {
"27-04-2023": [
{
id: "SOkXFGtTwh",
},
{
id: "i3NrqNyG9P",
},
{
id: "lCmxr4rc5T",
},
]
}
};
const data2 = {
messages: {
"27-04-2023": [
{
id: "V9QzRgl6ji",
},
{
id: "K5wfD-kX8W",
}
],
"24-04-2023": [
{
id: "tuarzhHPwH",
},
{
id: "cbxu_dAeAj",
},
{
id: "9xJpEJGUnm",
}
]
},
};
如何合并它们以获得以下输出?
const data1 = {
messages: {
"27-04-2023": [
{
id: "SOkXFGtTwh"
},
{
id: "i3NrqNyG9P"
},
{
id: "lCmxr4rc5T"
},
{
id: "V9QzRgl6ji"
},
{
id: "K5wfD-kX8W"
}
],
"24-04-2023": [
{
id: "tuarzhHPwH"
},
{
id: "cbxu_dAeAj"
},
{
id: "9xJpEJGUnm"
}
]
}
};
执行这样的任务的最佳方式是什么?
2条答案
按热度按时间nvbavucw1#
你可以考虑使用
for-in
和spread运算符来合并数组的两个对象:3lxsmp7m2#
此版本将任意数量的此类对象合并为一个,只允许后面对象的属性值覆盖前面对象的同名属性值,但
messages
除外,它会得到特殊处理:抓取所有messages
属性,将它们转换为entries
的平面列表,并将结果折叠回单个对象:如果
messages
是您唯一的属性,则可以删除Object .assign
行。相反,如果您还需要对messages
以外的其他属性进行特殊处理,则可以很容易地添加与messages
并行的其他属性。