JavaScript嵌套循环问题

时间:2015-05-23 16:42:03

标签: javascript

我有一个我目前无法找到的讨厌的小虫子,所以非常感谢任何帮助。似乎idx增量不按顺序。问题是插入的项目中的数据是关闭的。当数据不支持时,我得到两个月的5行。

第二个月5应该是第6个月。在chartData数组中,它以第5个月结束,在dataSet2数组中以第6个月开始。我的代码中有些东西正在冲洗它。

正确的项目     {        MonthNum:5,        月:'5-2015',        ARB:18     }

不正确的项目     {        MonthNum:5,        月:'5-2015',        ARB:3     }

应该是     {        MonthNum:6,        月:'6-2015',        ARB:3     }

代码片段

    if(dataSet2.data.length >0) {
    var idx= 0;
    var moreToProcess = true;
    var totalForMonth = 0;
    var firstMonth = dataSet2.data[0].theDate.getMonth() + '-' + dataSet2.data[0].theDate.getFullYear();
    while(moreToProcess) {
        do {
            totalForMonth++;
            document.write(idx + ' - ' + dataSet2.data[idx].theDate.getMonth() + '-' + dataSet2.data[idx].theDate.getFullYear() + "<br />");

            idx++;
            if(idx>=dataSet2.data.length) {
                break;  
            };
        } while (firstMonth == dataSet2.data[idx].theDate.getMonth() + '-' + dataSet2.data[idx].theDate.getFullYear());
        if(idx > dataSet2.data.length){
            moreToProcess = false;
        } else {
            var item = new Object();
            item.MonthNum = dataSet2.data[idx-1].theDate.getMonth();
            item.Month = firstMonth;
            item.ARBs = totalForMonth;

            chartData.data.push(item);

            //reset variables
            totalForMonth = 0;
            if(idx >= dataSet2.data.length) {
                moreToProcess = false;
            } else {
                firstMonth = dataSet2.data[idx].theDate.getMonth() + '-' + dataSet2.data[idx].theDate.getFullYear();
            };
        };
    };
    alert("Done");
};

我创造了一个“工作”example here
更新:Example

1 个答案:

答案 0 :(得分:0)

似乎getMonth返回一个零索引值,这就是为什么它被1.DOH关闭了!

2015年6月13日的日期返回5作为Jan = 0,Feb - 1等的月份。这意味着June将返回5,就javaScript而言,这在技术上是正确的,但不是出于我的目的。简单的回答是只需将1添加到getMonth(),这样我就得到了我期待的值。