2016-04-17 10 views
0

私はこのようなオブジェクトを持っています。オブジェクトからデータを取得する

{ 
"class_details":{ 
        "class_1":{student_4":"<name>","student_3":"<name>,student_2":"<name>","student_1":"<name>}, 
        "class_2":{"student_1":"<name>}, 
        "class_0":{student_2":"<name>","student_1":"<name> 
       } 
} 

私はクラスを反復するためにループを使用しようとしていますが、私はそれを行うには完全な方法を見つけることができません。だから私はこの

for(int i=0; i < $scope.rounds.class_details.length;i++) 
    console.log(Object.keys($scope.rounds.class_details)[i]) 

しかし、ここをやっている

私はこのような何かを傾ける、

for(int i=0; i < $scope.rounds.class_details.length;i++) 
    console.log($scope.rounds.class_details.round_[i]) 

クラスの詳細は、順番に来ていない、これは私の場合には問題になります。

for(int i=0; i < $scope.rounds.class_details.length;i++) 
     console.log($scope.rounds.class_details.round_[i]) 

またはJSONクラスの詳細をソートするための簡単な方法がある場合に類似の代替がある場合、それは素晴らしいことです。

+0

http://stackoverflow.com/questions/5467129/sort-javascript-object-by-key – Chris

+0

私はこれを確かに試みますが、私がこの$ scope.rounds.class_detailsのようなデータを読めるかどうかを確認したいと思います。ラウンド_ {{0}} –

答えて

0

ようにあなたが望んでいるデータを読み取るための最も簡単な方法は以下の通りです: - :

  1. ことができます - あなたは二つの方法でオブジェクトのプロパティにアクセスすることができますので、

    for(int i=0; i < $scope.rounds.class_details.length;i++) 
        console.log($scope.rounds.class_details["round_" + i]); 
    

    これは、 (すなわち、I値)に動的な値を渡すこと

    object["property" + withVariable + "Name"]

  2. プロパティを知っているシンプルで読みやすい方法。

    object.propertyName

+0

ありがとうございます!今や愚かな気持ち –

+0

なぜ '$ scope.rounds.class_details'に長さがあるのか​​分かりません。それはオブジェクトであり、配列ではありません。 –

+0

私は知っている、それは変です...行のどこかにプロパティとして追加されない限り、長さはありません...クラスの詳細の数を正しくループしていることを二重チェックする価値があるかもしれません@MukundGandlur Object.keys($ scope.rounds.class_details).lengthのようなものはIE9 +で動くはずです) – Shakespeare

0

まず、JSONを修正。注:元のコードにはいくつか引用符がありません。これに続い

"class_details":{ 
     "class_1":{ 
      "student_4":"<name>", 
      "student_3":"<name>", 
      "student_2":"<name>", 
      "student_1":"<name>" 
     }, 
     "class_2":{ 
      "student_1":"<name>" 
     }, 
     "class_0":{ 
      "student_2":"<name>", 
      "student_1":"<name>" 
     } 
    } 

:昇順でキーを取得するには

//parse to json. Assume the 
     //'body' is the json data received 

//if there is data in body 
if(body){ 
    //parse body 
    var parsed_body= JSON.parse(body); 

    //your data 
    var class_details = parsed_body.class_details; 
    var class_2_student_1 = parsed_body.class_details.class_2.student_1; 

    //if you want to print json directly to the front-end, 
    //then Object Object may be printed out. to prevent this, 
    //one could use .toString() to convert Object to String. 
} 

else{}//do something if no data in the body 
1

は行います

var class_details_keys = Object.keys($scope.rounds.class_details); 
class_details_keys = class_details_keys.sort(function(a,b) {return (+a.substring(6)) - (+b.substring(6));}); 
for(int i=0, length = class_details_keys ; i < length;i++) 
    console.log($scope.rounds.class_details[class_details_keys[i]]); 

これは「class_が」の後部分文字列を取ることによって、昇順であなたのクラスを返します。それらを注文する。 "4"> "10"は不正確な結果を返すので、単純な文字列比較はできません。

+0

ソート関数はブール値ではなく-1、0、または+1を返します。 –

+0

正しい値を返すように編集されました – randominstanceOfLivingThing

関連する問題