比较来自多个孩子JSON的属性

时间:2017-09-08 18:06:34

标签: javascript json

如果我有一个像下面这样的JSON对象,我如何提取所有startdate字段来比较它们,所以我可以,例如,获得最小开始日期?

{  
   a:{  
      b1:{  
         c1:{  
            startdate:'2017-01-01',
            enddate:'2017-01-02'
         },
         c2:{  
            startdate:'2016-01-01',
            enddate:'2017-01-02'
         }
      },
      b2:{  
         c3:{  
            startdate:'2015-01-01',
            enddate:'2017-01-02'
         },
         c4:{  
            startdate:'2014-01-01',
            enddate:'2017-01-02'
         }
      }
   }
}

1 个答案:

答案 0 :(得分:0)

像YakovL指出的那样: 以下内容对您无效,因为您的json无效。

你不能遍历你的json,因为它没有数组。它有许多不同的属性。

你可以得到这样的数据:

var json = JSON.parse(YourJson);

var startdatec1 = json.a.b1.c1.startdate;

对于所有其他日期,您可以这样做,然后比较它们。但更好的改变json就像它有意义一样。例如,使它看起来像:

   [ 
     {
     "startdate":"2017-01-01",
     "enddate":"2017-01-02"
     }
     ,   
     {
     "startdate":"2016-01-01",
     "enddate":"2017-01-02"
     }
     , 
     {
     "startdate":"2015-01-01",
     "enddate":"2017-01-02"
     }
     , 
     {
     "startdate":"2014-01-01",
     "enddate":"2017-01-02"
     }
   ]

然后你可以这样循环:

var json = JSON.parse(YourJson);

for(var i = 0; i < json.length; i++) {
    var startDate = json[i].startDate;
    // compare startDates and save the lowest
}