100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > JS - 将tree(树形)数据结构格式改为一维数组对象格式(扁平化)

JS - 将tree(树形)数据结构格式改为一维数组对象格式(扁平化)

时间:2022-03-10 12:53:04

相关推荐

JS - 将tree(树形)数据结构格式改为一维数组对象格式(扁平化)

需求:将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;},

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。