如何调整JS数组嵌套对象结构,在日期层级下新增区域和作业两级结构
你只需要调整reduce内的嵌套层级初始化逻辑,把原来日期对应zone数组的结构,替换成你需要的zones对象嵌套结构即可,修改后的核心代码如下:
computed: { numbersByName() { return this.rows.reduce((obj, show) => { // 解构取出当前行需要的字段,加变量声明避免全局污染 const { name, zone, job, start_date: date } = show // 初始化人员层级 obj[name] = obj[name] || { dates: {} } // 初始化日期层级,日期对应包含zones属性的对象 obj[name].dates[date] = obj[name].dates[date] || { zones: {} } // 初始化区域层级,每个区域对应任务数组 obj[name].dates[date].zones[zone] = obj[name].dates[date].zones[zone] || [] // 把当前任务存入对应区域的数组 obj[name].dates[date].zones[zone].push(job) return obj }, {}) }, }
运行后输出的结构和你期望的完全一致。
内容的提问来源于stack exchange,提问作者Geoff_S
相关产品推荐
相关产品推荐

