使用javascript循环读取JSON数字数组[重复]

Posted

技术标签:

【中文标题】使用javascript循环读取JSON数字数组[重复]【英文标题】:Read through JSON number array using javascript loop [duplicate] 【发布时间】:2017-12-26 15:48:24 【问题描述】:

我正在尝试编写一个循环来读取嵌套数字数组。

我正在阅读的 JSON 文件是这样的。每个数字键代表事件日期。 json reference for startdate and end date enter image description here

我有下面的 javascript 代码,每个 var i = 1 或 j = 1 读取。 我想从日期中读取整个嵌套数字并将它们存储在某个地方。

$(document).ready(function () 
  $.getJSON('http://app.toronto.ca/cc_sr_v1_app/data/edc_eventcal_APR?limit=500', function (data) 
    var data = data;
    var i = 2;
    var obj = data[i].calEvent;  
    var bingname = obj.eventName;
    var j = 1;
    var startdate = obj.dates[j].startDateTime;
    var time = new Date(startdate);
    var starttime = time.getFullYear()+'-' + (time.getMonth()+1) + '-'+time.getDate();
    var name = JSON.stringify(bingname);   

    document.getElementById("bingname").innerhtml = name;


    document.getElementById("bingtime").innerHTML = starttime;


    var name = firebase.database().ref("/bing").set(
      EventName : name,
      EventStart : starttime
    );

  );
);

现在,我应该为 var j 使用一些增量循环。但我不确定如何。 对我来说问题是在 obj.dates[j] 中检索到的 json 看起来不像一个数组。我似乎无法将其作为要通读的数字列表来阅读。非常感谢您的帮助。

如果有人甚至可以将这个最接近今天的日期排序,那就是爱因斯坦:)

【问题讨论】:

obj.dates[j] 是一个对象。您可以使用 for 循环迭代数组。这些都是你应该学习的非常基本的 JavaScript 概念。 【参考方案1】:

您将获得一个对象数组,其中包括一个 callEvent 对象,该对象具有一个 dates 属性,该属性是一个具有属性 startDateTime 和 endDateTime 的对象的数组。 如下所示:

[
    
      callEvent: 
        dates: [
          startDateTime: '', endDateTime: '',
          // more objects with start- and endDateTime
        ]
      
    ,
    // more callEvent objects..
]

现在您的代码应该遍历数组以获取所有 callEvent 对象并遍历每个 callEvent 中的所有日期对象。

$(document).ready(function () 
    $.getJSON('http://app.toronto.ca/cc_sr_v1_app/data/edc_eventcal_APR?limit=500', function (array) 

        // loop through all elements in the array
        for (var i = 0; i < array.length; i++) 
            // loop through all dates inside the array 
            for (var j = 0; j < array[i].calEvent.dates.length; j++) 
                console.log(array[i].callEvent.dates[j].startDateTime)
                console.log(array[i].callEvent.dates[j].endDateTime)
            
        

    );
);

【讨论】:

不应该 data[i]array[i]array[i].datesdata[i].callEvent.dates【参考方案2】:

假设日期是有效的 JSON (JSON Validator),那么您应该能够获取数据并循环遍历它:

for (var i=0;i<data.length;++i) 
  console.log(data[i].startDateTime);
  console.log(data[i].endDateTime);

【讨论】:

JSON 没有指定日期格式,但是 ECMAScript 提供了一个 Date.prototype.toJSON 方法供 JSON.stringify 使用。

以上是关于使用javascript循环读取JSON数字数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将带有数字键的 JavaScript 对象转换为数组

json #AngularJS,#JavaScript:使用ng-repeat循环遍历嵌套数组

使用 Javascript 使用 for 循环对数组中的数字求和 [重复]

逐行读取Javascript中的.csv文件,并使用while循环将其放入数组中

在javascript中的JSON数组中搜索数字

javascript 循环读取数组中的值