嵌套结构数据(树状结构)变成扁平结构---带有子元素(children)
1.嵌套结构
2.扁平结构
3.代码展示
3.1.定义嵌套结构的数据array
var array = [ { label: '一级 1', children: [{ label: '二级 1-1', children: [{ label: '三级 1-1-1' }] }] }, { label: '一级 2', children: [{ label: '二级 2-1', children: [{ label: '三级 2-1-1' },{ label: '三级 2-1-2' }] }, { label: '二级 2-2', children: [{ label: '三级 2-2-1' }] }] }, { label: '一级 3', children: [{ label: '二级 3-1', children: { label: '三级 3-1-1' } }, { label: '二级 3-2', children: { label: '三级 3-2-1' } }] }, { label: '一级 4', } ]
3.2.js部分
flatten函数为一个递归函数,即,函数中引用该函数。
function flatten(array){ return [].concat(...array.map(item => { // console.log(item); if(item.children && item.children.length > 0){ // 有children元素,且为数组形式,数组长度大于等于1(例,二级 2-1) return [].concat(item, ...flatten(item.children)) }else if(item.children){ // 有children元素,且为对象形式(例,二级 3-1) return [].concat(item, item.children) }else{ // 没有children元素(例,一级 4) return item } })) }
3.3.打印出效果
var newArray = flatten(array); console.log(newArray);