2010-09-29 4 views
0

Я пытаюсь создать функцию, которая,рекурсивный цикл над объектом javascript?

Когда Дано объект будет выводить что-то вроде

<div> 
reason : ok 
status : 0 
AiStatistics : null 
CurrentSeasonArenaStatistics : null 
<div> 
    Player 
    <div> 
    CampaignProgressCoop : CompletedLegendary 
    CampaignProgressSp : PartialHeroic 
    <div> 
    ReachEmblem 
    <div> 
    background_index : 2 
    change_colors : [0,7,2,0] 
    flags : 0 
    foreground_index : 49 
    </div> 
    </div> 
    </div> 
</div> 
gender : male 
</div> 

Как бы я идти об этом?

Это моя попытка:

function read_object(object){ 
    var $obj = $('<div />'); 
    for(var o in object) { 
    $obj.append(o+' : '); 
    if(typeof(object[o]) == 'object' and object[o] != null) { 
     $obj.append(read_object(object[o])); 
    } 
    else 
     $obj.append(object[o]); 
    } 
    return $obj; 
} 

Вот объект я использую

{ 
    "reason":"Okay", 
    "status":0, 
    "AiStatistics":null, 
    "CurrentSeasonArenaStatistics":null, 
    "Player": 
    { 
    "CampaignProgressCoop":"CompletedLegendary", 
    "CampaignProgressSp":"PartialHeroic", 
    "ReachEmblem": 
    { 
     "background_index":2, 
     "change_colors":[0,7,2,0], 
     "flags":0, 
     "foreground_index":49 
    } 
    } 
} 
+0

Я не принимаю мочу ... но хорошо ли вы назвать свой метод из своего метода? Разве это не может быть его собственный метод, возможно, чтобы вернуть строку для вашего вывода? – Kieran

+0

нормально, исправлено, проблема заключалась в том, что я имел $ obj и $ obj2 вместо var $ obj и var $ obj2 – Hailwood

+2

Вот и вся идея рекурсии Кирана. Если вы еще не знаете значения рекурсии, см. Начало этого предложения. –

ответ

-1

Отдельный метод из основного вызова.


function read_object(object) 
{ 
    //do some cool stuff to return a string 
    return str; 
} 

function loopy(object) 
{ 
    for(var o in object) 
    { 
     if(typeof(object[o]) == 'object') 
     { 
      read_object(object) 
     } 
     else 
     { 
      //output in some other way 
     } 
    } 
} 
+2

Независимо от того, что вы делаете, вы получите рекурсивный рисунок. В вашем примере вы просто закончите вызов loopy из read_object. – Hailwood

+0

Да, это полностью работает только на одном уровне DOM. Я прочитал рекурсию. Большинство людей говорят, что вам действительно не нужно его использовать и может вызвать проблемы с стеком, однако он сохраняет код – Kieran

Смежные вопросы