腳本第n階樹 [英] JavaScript nth degree tree
本文介紹了腳本第n階樹的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
- 如果所有單擊的子項都為True,則需要將父項的Clicked屬性更改為True。因此,在本例中,ID-14,15是將CLICKED屬性設置為True。因此,ID 11被點擊的父母必須成為真的。
- 如果11、12、14、15為真,則必須使4為真。
let obj = {children:[
{
ID:1,
clicked: false,
children: [
{
ID:4,
clicked: false,
children: [
{
ID:11,
clicked: false,
children: [
{
ID:14,
clicked: true,
},
{
ID:15,
clicked: true,
}
]
},
{
ID:12,
clicked: false,
}
]
},
{
ID:5,
clicked: false,
}
]
}
]
}
推薦答案
Nina很好地回答了您何時要更改輸入。
下面是一個創建新對象的簡單方法:
數據-lang="js"數據-隱藏="假"數據-控制臺="真"數據-巴貝爾="假">const consolidate = ({clicked, children = [], ...rest}, _, __, kids = children .map (consolidate)) => ({
...rest,
clicked: clicked || (kids .length > 0) && kids .every (k => k .clicked),
...(kids .length ? {children: kids} : {})
})
const obj1 = {children: [{ID: 1, clicked: false, children: [{ID: 4, clicked: false, children: [{ID: 11, clicked: false, children: [{ID: 14, clicked: true}, {ID: 15, clicked: true}]}, {ID: 12, clicked: false}]}, {ID: 5, clicked: false}]}]};
// with 12 switched to `true`
const obj2 = {children: [{ID: 1, clicked: false, children: [{ID: 4, clicked: false, children: [{ID: 11, clicked: false, children: [{ID: 14, clicked: true}, {ID: 15, clicked: true}]}, {ID: 12, clicked: true}]}, {ID: 5, clicked: false}]}]};
console .log ('obj1', consolidate (obj1))
console .log ('obj2', consolidate (obj2))
.as-console-wrapper {max-height: 100% !important; top: 0}
我們重復children
(如果有),然后重新生成對象,計算每個對象的clicked
屬性。
這篇關于腳本第n階樹的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持IT屋!
查看全文