2 回答

TA貢獻2037條經驗 獲得超6個贊
您可以使用reduce和forEach方法來創建嵌套結構以及一個數組,您可以在其中指定要迭代的鍵的順序。
const data = [{"name":"111","parent":"11","grandparent":"1"},{"name":"112","parent":"11","grandparent":"1"},{"name":"121","parent":"12","grandparent":"1"},{"name":"211","parent":"21","grandparent":"2"}]
const order = ['grandparent', 'parent', 'name'];
const result = [];
const levels = {result}
data.forEach(o => {
order.reduce((r, e) => {
const name = o[e];
if (!r[name]) {
const value = {name, children: []}
r[name] = {result: value.children}
r.result.push(value)
}
return r[name]
}, levels)
})
console.log(result)

TA貢獻1829條經驗 獲得超6個贊
如果你想用作動態數組值,請使用Object.keys()和reverse
const data = [{"name":"111","parent":"11","grandparent":"1"},{"name":"112","parent":"11","grandparent":"1"},{"name":"121","parent":"12","grandparent":"1"},{"name":"211","parent":"21","grandparent":"2", "grandgrandparente": "3"}]
const result = [];
const levels = {result}
data.forEach(o => {
const order = Object.keys(o).reverse();
order.reduce((r, e) => {
const name = o[e];
if (!r[name]) {
const value = {name, children: []}
r[name] = {result: value.children}
r.result.push(value)
}
return r[name]
}, levels)
})
console.log(result)
添加回答
舉報