Home > Net >  Time complexity of traversing nested JS object
Time complexity of traversing nested JS object

Time:07-21

I would like to know in which time complexity I am traversing my nested JS Object. For traversing the JS Object I am using three nested for-loops e.g.

Sketch of the For-Loop:

for(const page in object){
  for(const group in page){
    for(element in elements){
       }
      }
    }

I need to visit every Element of each Elements for each Group a Person has.

JS Object:

{
"Page 1":{
    "Group 1": {
        "Elements": [
            "Element 1",
        ]
    },
    "Group 2": {
        "Elements": [
            "Element 1"
        ]
    }
},
"Page 2":{
    "Group 1": {
        "Elements": [
            "Element 1",
            "Element 2"
        ]
    }
}

}

Is it O(n) due to the fact that I am visiting each elements only a single time?

CodePudding user response:

The complexity is O(P G E) where

  • P stands for the number of pages
  • G stands for the total number of groups
  • E stands for the total number of elements.

In practice this is equivalent to O(E), but if you would have empty pages and/or empty groups (so without elements), then either P or G could be greater than E, and then it is important to speak of O(P G E).

If however it is guaranteed that every page has at least one group, and every group has at least one element, then E is the greatest among (P, G, E), and so O(P G E) = O(E).

  • Related