You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何向已有对象内指定chatId的key追加消息对象?

问题解决方法

你的问题出在没有展开messageToAdd对象,直接把它作为整体放到新对象里,导致原有内容被错误替换(实际是新增了一个messageToAdd键,而非合并它的内部键值对)。

正确写法1:展开messageToAdd内容

用扩展运算符...展开messageToAdd,让它内部的键值对直接合并到目标对象中:

object[chatId] = {...object[chatId], ...messageToAdd};

比如你的场景中,messageToAdd是{"messageId3": {message: "newMessage", id: 2920222}},展开后messageId3会直接追加到chatid1的对象里,实现预期的追加效果。

正确写法2:直接赋值单个消息

如果messageToAdd仅包含一条消息,也可以直接给对应键赋值,更直观:

// 已知消息键的情况
object[chatId]["messageId3"] = {message: "newMessage", id: 2920222};

// 动态获取消息键的情况
const [messageKey] = Object.keys(messageToAdd);
object[chatId][messageKey] = messageToAdd[messageKey];

正确写法3:使用Object.assign合并对象

也可以用Object.assign方法实现对象合并,效果和扩展运算符一致:

object[chatId] = Object.assign({}, object[chatId], messageToAdd);

验证结果

执行上述任意代码后,object.chatid1的结构会变为:

"chatid1": {
  "messageId1": {message: "hello", id: 293839},
  "messageId2": {message: "test", id: 2929292},
  "messageId3": {message: "newMessage", id: 2920222}
}

内容的提问来源于stack exchange,提问作者Coding Ninja123211

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 05:32:44