循环遍历Javascript中的Json结构

时间:2017-02-26 05:53:18

标签: javascript jquery json

问题:想知道,在Json文件的内部结构中循环项目的最佳方法是什么。喜欢"放映时间"关键在这里?

我的Json文件:

var movies_list = {
    "movies":[  
   {  
      "id":"1",
      "name":"Finding Nemo",
      "audience":"UA",
      "language":"english",
      "genre":[  
         "kids",
         "adventure"
      ],
      "running_time":"120",
      "showtimes":[  
         {  
            "cinema_name":"Suncity",
            "display_showtime":"10:00 AM",
            "showtime_code":1000
         },
         {  
            "cinema_name":"PVR",
            "display_showtime":"1:00 PM",
            "showtime_code":1300
         }
      ]
   },
   {  
      "id":"2",
      "name":"Incredibles",
      "audience":"UA",
      "language":"english",
      "genre":[  
         "kids",
         "thriller"
      ],
      "running_time":"190",
      "showtimes":[  
         {  
            "cinema_name":"Suncity",
            "display_showtime":"8:00 AM",
            "showtime_code":0800
         },
         {  
            "cinema_name":"Suncity",
            "display_showtime":"2:00 PM",
            "showtime_code":1400
         }
      ]
   }
]
};

迭代第一个循环工作正常。只想循环播放"放映时间"键。

我的代码:

var data = movies_list.movies;

for(var i = 0; i < data.length; i++){
   var fisrtLoopData = data[i];
   $('body').append('<p>'+ fisrtLoopData + '</p>');
}

4 个答案:

答案 0 :(得分:1)

尝试:

var data = movies_list.movies;

for(var i = 0; i < data.length; i++){
   var showtimes = data[i].showtimes
   for (var j=0; j<showtimes.length; j++){
        var items = showtimes[j]
       $('body').append('<p>'+ items.cinema_name + '</p>');
    }
}

答案 1 :(得分:0)

$(function(){
  var data = movies_list;  
  Object.keys(data).forEach(function(k){        
    for(var i = 0; i < movies_list[k].length; i++){
       var fisrtLoopData = movies_list[k][i]["name"] + " " + movies_list[k][i]["audience"];
       $('body').append('<p>'+ fisrtLoopData + '</p>');
    }
    });
});

答案 2 :(得分:0)

一些观察结果:

  • 您的JSON无效。

BackgroundFill constructors

0 的前导"showtime_code": 0800表示JavaScript中的octal number。八进制数不能包含8,因此该数字无效。 JSON没有(正式)支持octal个号码,即使该号码不包含8

更正:如果您有号码,请不要将其与前导zero一起存储。如果您的值必须为前导零,请不要将其视为number,而应将其视为string。用它周围的引号存储它。

enter image description here

JSON解析:使用JavaScript enter image description here方法解析JSON以获取所需数据。

<强>样本

&#13;
&#13;
var movies_list = {
    "movies":[  
   {  
      "id":"1",
      "name":"Finding Nemo",
      "audience":"UA",
      "language":"english",
      "genre":[  
         "kids",
         "adventure"
      ],
      "running_time":"120",
      "showtimes":[  
         {  
            "cinema_name":"Suncity",
            "display_showtime":"10:00 AM",
            "showtime_code":1000
         },
         {  
            "cinema_name":"PVR",
            "display_showtime":"1:00 PM",
            "showtime_code":1300
         }
      ]
   },
   {  
      "id":"2",
      "name":"Incredibles",
      "audience":"UA",
      "language":"english",
      "genre":[  
         "kids",
         "thriller"
      ],
      "running_time":"190",
      "showtimes":[  
         {  
            "cinema_name":"Suncity",
            "display_showtime":"8:00 AM",
            "showtime_code":800
         },
         {  
            "cinema_name":"Suncity",
            "display_showtime":"2:00 PM",
            "showtime_code":1400
         }
      ]
   }
]
};

var arr = [];
var res = movies_list.movies.map(function(item) {
  for (var i in item.showtimes) {
    arr.push(item.showtimes[i].cinema_name);
  }
});

console.log(arr);
&#13;
&#13;
&#13;

答案 3 :(得分:0)

movies_list.movies.forEach(function(movie) { 
    movie.showtimes.forEach(function(showtime) {
       console.log(showtime.cinema_name)
    });
});

以功能的方式。你实际上并不需要任何循环。