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

如何在JavaScript中实现C++ std::map存储std::vector数组的功能

问题原因与解决方案

错误点

  • Array.push()方法的返回值是数组新的长度,不是数组本身。你直接将push的返回值存入Map,导致Map中存储的都是数值类型的长度,不是你预期的数组,后续调用属性自然无法得到正确结果。
  • 你所有键共用了同一个全局array_history数组,最终所有键都会指向同一个数组,不同键的数据会完全混淆,不符合C++中std::map每个key对应独立std::vector的效果。
  • 取值逻辑顺序错误:你存入数组的元素是带h_col1属性的对象,正确取值逻辑是先取数组的第0个元素,再取它的h_col1属性,你的代码写反了顺序。
  • 变量名不匹配:你定义的Map变量名为my_map,取值时写的是xer_map,会直接报错找不到变量。

修正代码

存值逻辑

var my_map = new Map();

// 以下代码位于for循环内
const key = data_blob[row].s_col1;
// 键不存在时先初始化对应空数组
if (!my_map.has(key)) {
  my_map.set(key, []);
}
// 取出对应数组,执行push操作
my_map.get(key).push({ h_col1: data_blob[row].s_col2 });

取值逻辑

// 先判断键存在、数组不为空,避免运行报错
if (my_map.has("GG1000") && my_map.get("GG1000").length > 0) {
  document.writeln(my_map.get("GG1000")[0].h_col1);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:30:01