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
相关产品推荐
相关产品推荐

