从对象中检索数据

时间:2016-04-17 16:43:22

标签: javascript

我有一个看起来像这样的对象。

{
 "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($scope.rounds.class_details.round_[i])

所以我这样做

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])

或者是否有一种简单的方法来对JSON类详细信息进行排序。

3 个答案:

答案 0 :(得分:1)

要按升序获取密钥,请执行以下操作:

git clone --depth 1 <repository>

这将通过获取'class_'之后的子字符串并按顺序返回您的类。你不能做一个简单的字符串比较,因为“4”&gt; “10”将返回错误的结果。

答案 1 :(得分:0)

读取数据的最简单方法就像您希望的那样: -

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

这是因为您可以通过两种方式访问​​对象属性: -

  1. 允许您传递动态值(即i值)

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

  2. 简单易读的方式,您知道该属性。

    object.propertyName

答案 2 :(得分:0)

首先,修复json。注意:原始代码中缺少一些引号。

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