需求:将JSON①数据格式输出为JSON②格式。
JSON①:
[{sortName:'小明',sortCode: 'xm',children:[]},{sortName:'小刚',sortCode:'xg',children:[{sortName:'小小刚',sortCode:'xxg'},{sortName:'小小小刚',sortCode:'xxxg'}]}],
JSON②:
[{sortName:'小明',sortCode: 'xm',},{sortName:'小刚',sortCode: 'xg',},{sortName:'小小刚',sortCode:'xxg',},{sortName:'小小小刚',sortCode:'xxxg'}],
方法1:
treeToOneArr(arr) {let data = JSON.parse(JSON.stringify(arr)) // 对传入的参数进行深拷贝let newData = [] // 创建空数组用来接收操作后的新数组const hasChildren = (item) => {// 递归遍历,把包含children的选项拿出来,push到之前新建的空数组内(item.children || (item.children = [])).map(v => {hasChildren(v)})delete item.children // 删除原children属性,可选项newData.push(item)}data.map(v => hasChildren(v))return newData},
方法2:
getOneArr(arr) {let tree= JSON.parse(JSON.stringify(arr))let newData = []const expanded = datas => {if (datas&& datas.length > 0){datas.forEach(e => {newData.push(e);expanded(e.children);})}};expanded(tree);return newData;},