首页 > 解决方案 > 对象[key]满足前提条件的foreach键

问题描述

我想在不知道第一级键的情况下访问满足条件的嵌套对象的所有第二级元素。

例如:

myObject = {
   foo: {
      element_one : 1,
      element_two : 1,
      ...
   },
   bar: {
      element_one : 3,
      element_two : 4,
      ...
   },
   buzz: {
      element_one : 99,
      element_two : 100,
      ...
   },
   ...
} 

在上面的示例中,我希望能够有效地获取所有 1 级键myObject.<any_key>.element_one === some_number

一个明显的解决方案是遍历列表并检查每个元素,但是通过多次调用此函数,这在计算上变得昂贵。作为备份,我可以创建一个新对象,其中 keys = element_one 并将其用作参考。

但我很想知道是否有更好的方法来处理这个问题?

编辑:我没有关于元素最大值的先验知识。

标签: javascriptjavascript-objects

解决方案


您可以使用Object.keys获取对象的第一级键的数组,并用于Array.prototype.filter过滤第一级键,其中第二级键具有指定的编号:

myObject = {
   foo: {
      element_one : 1,
      element_two : 1
      },
   bar: {
      element_one : 3,
      element_two : 4
     },
   buzz: {
      element_one : 99,
      element_two : 100
   }
   
} 
console.log(Object.keys(myObject).filter(key => myObject[key].element_one === 99));


推荐阅读