2015-01-07 25 views
2

我試圖在每次迭代中分隔每個月的日期。我有一個數組var selected=["pre populated with special dates"],它有所有選定的日期。現在在這段代碼中,我怎樣才能修改它以從selected[]數組中刪除每個月的日期,並在每次迭代中只填入這個特定月份的日期來填充thisMonthDates[]刪除數組元素並將它們填充到javascript中的另一個數組中

var ind=start.getMonth(); 
      var thisMonthDates = []; 
      while(ind<=yearDifference){  
       for (var k = 0; k < selectedArrayLength; k++) { 
        if (new Date(selected[k]).getMonth() == monthIndex[ind]) { 
         thisMonthDates = selected[k]; 
         //console.log(new Date(thisMonthDates[k])); 
        } 
       } 
       for(var eachDt=0; eachDt<thisMonthDates.length; eachDt++) { 
        //code for highlighting the dates 
       } 
       ind++; 
      } 

以下是selected[]數組內容。而thisMonthDates[]是循環之前的空數組。

selected = [Date 2015-01-06T19:00:00.000Z, 
Date 2015-01-13T19:00:00.000Z,Date 2015-01-20T19:00:00.000Z,Date 2015-01-27T19:00:00.000Z, 
Date 2015-02-03T19:00:00.000Z,Date 2015-02-10T19:00:00.000Z,Date 2015-02-17T19:00:00.000Z, 
Date 2015-02-24T19:00:00.000Z,Date 2015-03-03T19:00:00.000Z,Date 2015-03-10T19:00:00.000Z, 
Date 2015-03-17T19:00:00.000Z,Date 2015-03-24T19:00:00.000Z,Date 2015-03-31T19:00:00.000Z, 
Date 2015-04-07T19:00:00.000Z,Date 2015-04-14T19:00:00.000Z,Date 2015-04-21T19:00:00.000Z, 
Date 2015-04-28T19:00:00.000Z,Date 2015-05-05T19:00:00.000Z,Date 2015-05-12T19:00:00.000Z, 
Date 2015-05-19T19:00:00.000Z]; 
+0

你能提供一些樣本輸入和輸出嗎? –

+0

在循環之前'selected'和'thisMonthDates'看起來像什麼? – axelduch

+0

@PeterAshwell我用選定的[]數組編輯了問題。 – Superman

回答

1

這個循環應該做的伎倆

for (var k = 0; k < selectedArrayLength; k++) { 
    if (new Date(selected[k]).getMonth() == monthIndex[ind]) { 
     thisMonthDates.push(selected.splice(k, 1)); 
     k--; // since we removed an element we need to decrement k 
    } 
} 
+0

非常感謝。 – Superman

0

看看這個例子可以幫助:

http://plnkr.co/edit/XbnJV0B0bO00o4iJdBtV

var selected = []; 
var JANUARY = 0 
var FEBRUARY = 1 
var MARCH = 2; 
selected.push(new Date(2015, FEBRUARY, 15)); 
selected.push(new Date(2015, JANUARY, 10)); 
selected.push(new Date(2015, FEBRUARY, 6)); 
selected.push(new Date(2015, MARCH, 25)); 

var thisMonth = []; 

for (var i = 0; i < selected.length; i++) { 
    if (selected[i].getMonth() === FEBRUARY) { 
     thisMonth.push(selected[i]); 
    } 
} 

console.log(selected); 
console.log(thisMonth); 

和輸出:

[Sun Feb 15 2015 00:00:00 GMT+1100 (AEDT), Sat Jan 10 2015 00:00:00 GMT+1100 (AEDT), Fri Feb 06 2015 00:00:00 GMT+1100 (AEDT), Wed Mar 25 2015 00:00:00 GMT+1100 (AEDT)] 
[Sun Feb 15 2015 00:00:00 GMT+1100 (AEDT), Fri Feb 06 2015 00:00:00 GMT+1100 (AEDT)] 
+0

下一次當我的循環迭代時,它必須遍歷所有這些創建問題的日期。 selected []數組中的元素應該少一些。正如你所看到的,最後還有另外一個循環,它將用來突出日期後的日期。 – Superman

相關問題