<style>p.p1 { margin: 0; font: 13px "Helvetica Neue"; color: rgba(0, 0, 0, 1) }</style>
var arr = [{id: 1},{id: 2},{id: 3},{id: 'blank'},{id: 4},{id: 5},{id: 'blank'}, {id: 6},{id: 'blank'}] 1. 把 arr轉換為二維陣列:以blank分割,如下 [ [{id: 1},{id: 2},{id: 3}], [ {id: 4},{id: 5} ], [{id: 6} ]]
var arr = [{id: 0}, {id: 1, name: 'hr'}, {id: 2}, {id: 3}, {id: 4, name: 'hr'}, {id: 5}, {id: 6}] 2. 把arr轉換為:以name為hr拆分并追加到name為hr的chuidren,如下 [{ id: 0 }, { id: 1, name: 'hr', children: [ {id: 2}, {id: 3} ] }, { id: 4, name: 'hr', children: [{id: 5}, {id: 6}] }]
答案:
1. var resetArr = arr.reduce((acc, cur, idx, src) => { // console.log(acc) if(cur.id === 'blank') { idx!== src.length - 1 && acc.push([]) } else { acc.length === 0 && acc.push([]) acc[acc.length - 1].push(cur) } return acc }, [])
2. function fn(list) { var newArr = [] var n = 0; for (let i = 0; i < arr.length; i++) { const ele = arr[i]; newArr.push(ele) n = i if (ele.name === 'hr') { n = i + 1 console.log(arr[n], '---'); ele.children = []; while (n < arr.length && (!arr[n].name)) { ele.children.push(arr[n]) n = n + 1 } i = n - 1; } } return newArr } var ss = fn(arr)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/144623.html
標籤:JavaScript
上一篇:JS陣列之操作方法
下一篇:快速掌握ES6的class用法
