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

JavaScript数组与对象:如何为同一键添加多个值?

菜单与子菜单ID映射的实现方案

数组方式的正确实现

你之前遇到的问题是因为没提前把arr[0]初始化为数组。如果直接对未初始化的数组元素调用push,或者误将赋值操作(=)当成push,就会导致只保留最后一个值。正确的做法是先初始化每个菜单对应的数组容器,再添加子ID:

// 初始化数组,每个元素对应一个菜单的子ID集合
const arr = [];
arr[0] = [];
arr[1] = [];
arr[2] = [];

// 向对应菜单的数组中添加子ID
arr[0].push(1);
arr[0].push(2);
arr[0].push(3);
arr[1].push(5);
arr[1].push(7);
arr[2].push(9);

// 也可以直接初始化时赋值,更简洁
// const arr = [[1,2,3], [5,7], [9]];

执行后arr就会符合你的预期:arr[0] = [1,2,3],arr[1] = [5,7],arr[2] = [9]。

对象数组的实现方案

如果菜单ID不连续,或者需要存储更多菜单相关信息(比如菜单名称),用对象数组会更灵活。示例如下:

// 用对象数组存储菜单与子ID的映射,每个对象包含菜单ID和对应的子ID集合
const menuMap = [
  { menuId: 0, subIds: [1,2,3] },
  { menuId: 1, subIds: [5,7] },
  { menuId: 2, subIds: [9] }
];

// 动态添加子ID的方式
menuMap.find(item => item.menuId === 0).subIds.push(4);

这种方式可以更清晰地关联菜单ID和对应的子ID集合,扩展性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:10:19