JavaScript nth degree tree(脚本第n阶树)
本文介绍了脚本第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阶树的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:脚本第n阶树
基础教程推荐
猜你喜欢
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- 直接将值设置为滑块 2022-01-01