以树形结构实现省市区扁平化
在数据结构中,省市区通常以树形结构呈现,但有时需要将其扁平化为一级二级三级代码的结构。
问题描述
给定省市区树形数据,其中节点带有已选中的标记:“checked”。要求将树形结构扁平化为:
解决方案
以下 JavaScript 代码实现了这一转换:
function getNewData(data) { let d = [] for (let province of data) { if (province.checked == 1) { let obj = { provinceAreald: province.code, cityAreald: null, countryAreald: null, actualAreaLevel: '1' } const cityArr = cityCheck(province, obj, d) if (cityArr.length == province.children.length) { Object.assign(obj, { cityAreald: null, actualAreaLevel: '1' }) d.push(obj) // 2级菜单被<全部>选中 } else { d.push(...cityArr) // 2级菜单被<部分>选中 } } } }
辅助函数说明
代码说明