2016-08-08 21 views
1

内の最後の子要素を探す:私はそのような構造のJSONファイル持っているJSONファイル

"FAMILY": { 
     "1": { 
      "ANNA": { 
       "name": "ANNA X", 
       "alive": true, 
       "children": { 
        "MAX": { 
         "name": "MAX X", 
         "alive": false, 
         "children": {} 
        }, 
        "TOM": { 
         "name": "TOM X", 
         "children": { 
          "TOM JR": { 
          "name": "MAX X", 
          "alive": true, 
          "children": {...} 
          } 
         } 
        } 
       } 
      } 
     }, 
     "2":... 
} 

を私は生きている(子供用データの)最後の子を見つけたいと思います。私たちは家族の人数を知らないので、1人の人に1つのループはできません。 どうすればいいですか?アンナの家族全員をループし、最後の生存者を見つける。

ありがとうございました。

+1

ためのもう一つの解決策であると考えられてきましたMAXとTOMの両方にそれぞれ3人の孫がいる場合はどうなりますか?あなたはそれらをすべて欲しいですか? – smoksnes

+0

子供を抱えるアンナの子供は1人だけです。これは他の家族の場合と同じです。 – PSport

+0

ツリーデータ構造に精通していますか?あなたは基本的に木の深さを探していますが、葉に達したときに人が生きているかどうかを確認する小さな修正を加えています。 –

答えて

0

すべてのノードで反復処理を行い、レベルの深さを計算する必要があります。また、最も深いレベルのノードを保持する変数も必要です。再帰が終了すると、変数が返されます。再帰とバブルソートを探します。

+0

よろしくお願いします。私はそれを試みるつもりです – PSport

0

私はこれが助けなければなりません願って、ここで私はあなたのオブジェクトがobj変数

var last_member =null; 
function getLastChildren(obj) 
{ 
    for(i in obj) 
    { 
     if(typeof obj[i].children !== "undefined") 
     { 
      getLastChildren(obj[i].children); 
     } 
     else if(typeof obj[i].alive !== "undefined" && obj[i].alive) 
     { 
      last_member=obj[i]; 
     } 
    } 
} 
getLastChildren(obj.FAMILY); 
console.log(last_member); 

で最も深いレベルの最後のメンバーを取得します

var last_member =null; 
var deep_level=0; 
function getLastChildren(obj, current_level) 
{ 
    for(i in obj) 
    { 
     if(typeof obj[i].children !== "undefined") 
     { 
      getLastChildren(obj[i].children, current_level+1); 
     } 
     else if(typeof obj[i].alive !== "undefined" && obj[i].alive current_level>=deep_level) 
     { 
      last_member=obj[i]; 
      deep_level=current_level; 
     } 
    } 
} 
getLastChildren(obj.FAMILY,1); 
console.log(last_member); 

おかげ

+0

それは最初の子供だけをとります。私たちは深いレベルで子供たちに入る必要があります。 – Doruk

+0

ああ、はい私は答えを –

+0

を修正させてくださいあなたの助けをありがとう。ええ、それは私がすでに試みたものですが、それは最初の子供だけをループします。だから私は他の子供たちにアクセスすることはできません。 – PSport

関連する問題