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

如何通过if条件为对象添加键?WebSocket场景实现问询

解决WebSocket消息处理中动态更新对象的问题

我来帮你搞定这个需求!首先要注意一个关键点:WebSocket接收到的消息通常是JSON字符串,所以第一步得先把它解析成JavaScript对象才能访问里面的字段。下面是完整的实现代码,完全符合你的要求:

let ChanIds = {};
w.on('message',(msg) => {
  // 将JSON字符串解析为JS对象(如果你的WebSocket已经自动解析,这步可以省略)
  const parsedMessage = JSON.parse(msg);
  console.log(parsedMessage);

  if (parsedMessage.event) {
    // 在控制台输出chanId和交易对名称pair
    console.log(`chanId: ${parsedMessage.chanId}, pair: ${parsedMessage.pair}`);
    // 给ChanIds对象添加动态键值对:键为chanId,值为symbol
    ChanIds[parsedMessage.chanId] = parsedMessage.symbol;
  }
});

关键细节解释:

  • JSON解析:如果你的WebSocket框架没有自动把消息解析为对象,一定要加JSON.parse(msg),不然直接访问msg.event会得到undefined。
  • 动态对象键赋值:这里必须用方括号语法(ChanIds[parsedMessage.chanId]),因为我们要把chanId的具体值作为键名。如果用点语法(ChanIds.parsedMessage.chanId),会把字符串"parsedMessage.chanId"当成键,这显然不是我们想要的结果。
  • 符合示例预期:当收到你提供的示例消息时,代码会输出chanId: 4, pair: BTCUSD,同时ChanIds会被更新为{4: "tBTCUSD"},完全匹配你的期望。

额外提醒:

如果后续收到相同chanId的消息,新的symbol值会覆盖之前的内容——这是对象键的特性,如果你需要避免覆盖,可以先判断ChanIds[parsedMessage.chanId]是否存在再做处理。

内容的提问来源于stack exchange,提问作者Лена Фролова

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:40:54