hierarchical data, how to loop all level and insert additional data into each node

I have hierarchical data in Javascript looks like below and I try to find the way add jsonStringify in each comments node, how to do it?

var o = {
  "comments": {
    "count": 2,
    "data": [
      {
        "text": "..",

        "comments": {
          "count": 1,
          "data": [
            {
              "text": "..",

              "comments": {
                "count": 0,
                "data": [],
                // "jsonStringify":
              }
            },
          ],
          // "jsonStringify":
        }
      },

      {
        "text": "..",

        "comments": {
          "count": 0,
          "data": [],
          // "jsonStringify":
        }
      },     
    ],
    // "jsonStringify":
  }
};

add jsonStringfy
this only work with knowing how many level

  • jQuery: Sorting hierarchical data?
  • Redux data structuring
  • How to organise/nest data for d3.js chart output
  • var jsonStringify = JSON.stringify(o.comments);
    o.comments.jsonStringify = jsonStringify;
    
    for (var i = 0; i < o.comments.data.length; i++) {
      var jsonStringify = JSON.stringify(o.comments.data[i].comments);
      o.comments.data[i].comments.jsonStringify = jsonStringify;
    }
    

    for example above data have 2 branch, and the deepest level is 3 (
    “comments” > “comments” > “comments”,
    “comments” >”comments”),
    I want to find each “comments” get the value like below 1 and apply to JSON.stringify function get result then modified the same node insert the result become 2

    1
    "comments": {
      "count": 0,
      "data": []
    }
    2
    "comments": {
      "count": 0,
      "data": [],
      "jsonStringify": "{\"count\":0,\"data\":[]}"
    }
    

    I try to find the way if the data unknown how many level

  • jQuery: Sorting hierarchical data?
  • How to organise/nest data for d3.js chart output
  • Redux data structuring
  • One Solution collect form web for “hierarchical data, how to loop all level and insert additional data into each node”

    It was answered before original question were modified with the remark to the different count numbers.
    Still waiting for author to elaborate about it.

    Source code:

    var o = {
      "comments": {
        "count": 2,
        "data": [
          {
            "text": "..",
            "comments": {
              "count": 1,
              "data": [
                {
                  "text": "..",
    
                  "comments": {
                    "count": 0,
                    "data": [],
                  }
                },
              ]
            }
          },
          {
            "text": "..",
            "comments": {
              "count": 0,
              "data": []
            }
          }
        ]
      }
    };
    
    function jsonStringify(array){
      for(var i=0;i<array.length;i++){
        var ar = array[i];
        ar.comments.jsonStringify = JSON.stringify(ar.comments);
        ar.comments.data = jsonStringify(ar.comments.data);
        array[i] = ar;
      }
      return array;
    }
    
    var result = jsonStringify([o]);
    
    console.log( JSON.stringify(result,null,'\t') );
    

    result:

    [
        {
            "comments": {
                "count": 2,
                "data": [
                    {
                        "text": "..",
                        "comments": {
                            "count": 1,
                            "data": [
                                {
                                    "text": "..",
                                    "comments": {
                                        "count": 0,
                                        "data": [],
                                        "jsonStringify": "{\"count\":0,\"data\":[]}"
                                    }
                                }
                            ],
                            "jsonStringify": "{\"count\":1,\"data\":[{\"text\":\"..\",\"comments\":{\"count\":0,\"data\":[]}}]}"
                        }
                    },
                    {
                        "text": "..",
                        "comments": {
                            "count": 0,
                            "data": [],
                            "jsonStringify": "{\"count\":0,\"data\":[]}"
                        }
                    }
                ],
                "jsonStringify": "{\"count\":2,\"data\":[{\"text\":\"..\",\"comments\":{\"count\":1,\"data\":[{\"text\":\"..\",\"comments\":{\"count\":0,\"data\":[]}}]}},{\"text\":\"..\",\"comments\":{\"count\":0,\"data\":[]}}]}"
            }
        }
    ]