能否创建多层嵌套对象?项目需构建含多层级数据集的对象
修复语法问题 + 设计合理性分析
首先,你的示例代码有几处语法错误导致无法运行——我先帮你修正成可正常工作的版本,再聊聊这个嵌套数据集设计的合理性问题。
修正后的可运行代码
var menu = { "appetizers": { soup: { num1: "beef", num2: "chicken", vegetarian: { v1: "soy", v2: "tomato" } }, "salad": { sal1: "apple", sal2: "egg" } } };
(注:原代码里num3: "vegetarian": { ... }的写法不符合对象字面量语法,我调整成了把vegetarian作为soup的直接子属性,更贴合你想表达的“素食汤有细分选项”的逻辑)
关于设计是否冗余的判断
这个嵌套结构是否冗余,完全取决于你的业务使用场景:
- 如果你的需求是支持多层级的导航/筛选(比如用户需要先选「开胃菜」→再选「汤」→再选「素食汤」→最后选具体种类),这种层级化结构非常合理,能清晰映射业务逻辑,一点都不冗余。
- 但如果你的业务只需要直接获取所有开胃菜选项,不需要区分层级,那这种嵌套就会增加遍历的复杂度,此时可以考虑扁平化结构,比如:
var flatMenu = [ { category: "appetizers", subCategory: "soup", type: "beef" }, { category: "appetizers", subCategory: "soup", type: "chicken" }, { category: "appetizers", subCategory: "soup", type: "vegetarian", subType: "soy" }, { category: "appetizers", subCategory: "soup", type: "vegetarian", subType: "tomato" }, { category: "appetizers", subCategory: "salad", type: "apple" }, { category: "appetizers", subCategory: "salad", type: "egg" } ];
这种结构更适合需要批量查询、过滤的场景。
小建议
如果你既需要层级化展示(比如前端菜单导航)又需要扁平化操作(比如后台数据统计),可以同时维护两种结构,或者写个简单的转换函数,在需要的时候把层级结构转成扁平化结构,这样就能兼顾两种需求。
内容的提问来源于stack exchange,提问作者MegaDude
相关产品推荐
相关产品推荐

