关于遍历数组对象变更数据格式的问题?-灵析社区

东三环

let outlist = [{ level: 1, content: '标题测试' },{ level: 2, content: '互联网理财融资模式' },{ level: 1, content: '滴滴出行融资模式存在问题对策' },{ level: 2, content: '市场竞争白热化导致的被动融资' },{ level: 3, content: '111122223333' }] 请问如何将以上代码转换成如下格式: let newlist = [{ level: 1, content: '标题测试', children: [{ level: 2, content: '互联网理财融资模式' }]},{ level: 1, content: '滴滴出行融资模式存在问题对策', children: [{ level: 2, content: '市场竞争白热化导致的被动融资', children: [{ level: 3, content: '111122223333' }] }] }] 我尝试了很多办法,但都未成功 最后退而求其次,想通过一个自定义数组区分对象所属层级,但依旧未果 function sortFun (num) { let index = 0 for (let j = 0; j < meun.length; j++) { if (meun[j].level == num + 1) { meun[j].storey[num] = index++ } } return meun // 只能标注出第一层的下标 // sortFun(num++) // 想通过递归,但是报 “Maximum call stack size exceeded” 错误 } ···

阅读量:184

点赞量:0

问AI
function transform(list) { const ret = {}; for (let i = 0; i < list.length; ++i) { const { level } = item = {...list[i] }; const preLevel = Math.max(level - 1, 0); if (!ret[preLevel]) { ret[preLevel] = [item]; if (ret[level]) { item.children = ret[level]; continue; } } else { ret[preLevel].push(item); } ret[level] = item.children = []; } return ret[0]; } console.log(transform(outlist));