2016-02-03 11 views
3

У меня есть иерархические данные в Javascript, как показано ниже, и я пытаюсь найти способ добавить jsonStringify в каждый узел comments, как это сделать?иерархические данные, как выполнить цикл всего уровня и вставить дополнительные данные в каждый узел

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": 
    } 
}; 

добавить jsonStringfy
это только работа с зная, сколько уровень

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; 
} 

, например выше данных имеет 2 филиала, и самый глубокий уровень 3 (
«комментарии»> «Комментарии» > «комментарии»,
«комментарии»> «комментарии»),
Я хочу, чтобы каждый «комментарий» получил значение, как показано ниже 1, и применил к JSON.stringify f Результат соборование прибудет модифицируется тот же узел вставить результат стал 2

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

Я пытаюсь найти способ, если данные неизвестно, сколько уровня

+2

Это не совсем понятно, что вы спрашиваете здесь. –

+0

Вы хотите найти каждый узел с именем «комментарии», а затем применить функцию 'jsonStringify()' к его значению? И если да, то чего вы хотите добиться результата? –

+0

@JohnHascall Спасибо за ответ, да, я хочу найти «комментарии» каждого узла и применить «JSON.stringify()» к его значению, а затем добавить результат к тому же «комментарию» узла – user1575921

ответ

4

Это было ответить, прежде чем оригинальный вопрос, были изменены с замечанием к различным номерам счетчиков. Все еще дожидаясь, пока автор разобраться с этим.

код Источник:

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')); 

результат:

[ 
    { 
     "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\":[]}}]}" 
     } 
    } 
] 
+0

Спасибо за ответ, но это похоже только на то, чтобы знать, сколько комментариев уровня – user1575921

+0

извините, я не совсем понял это. Как вам нужно, чтобы механики работали тогда? –

+0

Вы можете показать финальный JSON, который хотите иметь с уже рассчитанными полями 'jsonStringify', пожалуйста? –