【发布时间】:2019-07-27 19:10:03
【问题描述】:
我想在不知道第一级键的情况下访问满足条件的嵌套对象的所有第二级元素。
例如:
myObject = {
foo: {
element_one : 1,
element_two : 1,
...
},
bar: {
element_one : 3,
element_two : 4,
...
},
buzz: {
element_one : 99,
element_two : 100,
...
},
...
}
在上面的示例中,我希望能够有效地抓取myObject.<any_key>.element_one === some_number 所在的所有第一级键。
一个明显的解决方案是遍历列表并检查每个元素,但是多次调用此函数会导致计算成本很高。作为备份,我可以创建一个新对象,其中 keys = element_one 并将其用作参考。
但我很想知道是否有更好的方法来处理这个问题?
编辑: 我没有关于元素最大值的先验知识。
【问题讨论】:
-
是的,迭代是您选择的数据结构的唯一解决方案。如果您确实需要经常这样做,请维护一个单独的数据结构,该结构具有从数字到键列表(或对象本身)的
Map。对于您描述的“多次调用”,这将具有最佳性能。我想不出其他任何东西,因为您没有说明该结构的任何其他属性。 -
明确地说,您将进行迭代(访问每个键),这个过程不能比 O(n) 更好。 @Bergi 建议缓存该结果,因此您可以避免在 m 调用上重做工作,但请注意 O(m*n) = O(n)。
标签: javascript javascript-objects