我有一个很大的对象,上面到处都是“可见”的关键。我用它来显示/隐藏 UI 中的项目。
但是,我有这些名为“全部显示”/“全部折叠”的按钮,我想相应地更改“可见”键的值。所以它一次显示/隐藏所有内容。
对象看起来像这样:
{
toplevelkey: [
{
innerKey: someValue,
visible: false
},
{
innerKey: someValue,
visible: false
}
],
visible: true
}
我尝试使用 recursion 来解决这个问题,但并没有真正的帮助。
答案 0 :(得分:1)
这是一个使用 for...in
循环遍历所有属性的递归解决方案:
transform: translate(-82.5%);
互动演示:
const a={toplevelkey:[{innerKey:"someValue",visible:!1},{innerKey:"someValue",visible:!1}],visible:!0};
function toggle(obj, show) {
if (typeof obj == "object" && obj != null) {
obj.visible = show;
for (const key in obj) {
toggle(obj[key], show);
}
}
}
toggle(a, true);
console.log(a);
const a={toplevelkey:[{innerKey:"someValue",visible:!1},{innerKey:"someValue",visible:!1}],visible:!0};
function toggle(obj, show) {
if (typeof obj == "object" && obj != null) {
obj.visible = show;
for (const key in obj) {
toggle(obj[key], show);
}
}
}
hide.addEventListener('click', ()=>{ toggle(a, false); console.log(a);})
show.addEventListener('click', ()=>{ toggle(a, true); console.log(a);})
答案 1 :(得分:0)
我认为使用字符串方法进行直接搜索替换会很有趣。此功能将切换所有可见:true/false。
它可以很容易地进行调整以将所有设置为一个或另一个,但现在它只是切换它们。享受!
{{1}}