在对象中查找特定键并设置其值

时间:2021-07-22 02:49:39

标签: javascript

我有一个很大的对象,上面到处都是“可见”的关键。我用它来显示/隐藏 UI 中的项目。

但是,我有这些名为“全部显示”/“全部折叠”的按钮,我想相应地更改“可见”键的值。所以它一次显示/隐藏所有内容。

对象看起来像这样:

{
  toplevelkey: [
    {
      innerKey: someValue,
      visible: false
    },
    {
      innerKey: someValue,
      visible: false
    }
  ],
  visible: true
}

我尝试使用 recursion 来解决这个问题,但并没有真正的帮助。

2 个答案:

答案 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}}