Run details:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
Chrome 109
Windows
Desktop
2 years ago
Test name Executions per second
For loop + Array.push 11180.5 Ops/sec
For loop + Spread Operator 9885.8 Ops/sec
While + Array.push 11469.3 Ops/sec
While + Spread Operator 9992.7 Ops/sec
Array.from 10061.9 Ops/sec
Tests:
  • For loop + Array.push

    x
     
    const start = new Date("2020-06-01");
    const end = new Date("2026-05-01");
    let dates = [];
    for (let currentDate = start; currentDate <= end; currentDate.setMonth(currentDate.getMonth() + 1)) {
      dates.push(currentDate.toISOString().split("T")[0]);
    }
  • For loop + Spread Operator

     
    const start = new Date("2020-06-01");
    const end = new Date("2026-05-01");
    let dates = [];
    for (let currentDate = start; currentDate <= end; currentDate.setMonth(currentDate.getMonth() + 1)) {
      dates = [...dates, currentDate.toISOString().split('T')[0]];
    }
  • While + Array.push

     
    const start = new Date("2020-06-01");
    const end = new Date("2026-05-01");
    let dates = [];
    let currentDate = start;
    while (currentDate <= end) {
          dates.push(currentDate.toISOString().split("T")[0]);
          currentDate.setMonth(currentDate.getMonth() + 1);
        }
  • While + Spread Operator

     
    const start = new Date("2020-06-01");
    const end = new Date("2026-05-01");
    let dates = [];
    let currentDate = start; 
    while (currentDate <= end) {
          dates = [...dates, currentDate.toISOString().split('T')[0]];
          currentDate.setMonth(currentDate.getMonth() + 1);
        }
  • Array.from

     
    const start = new Date("2020-06-01");
    const end = new Date("2026-05-01");
    let dates = Array.from(
          { length: (end.getFullYear() - start.getFullYear()) * 12 },
          (_, i) => new Date(start.getFullYear(), start.getMonth() + i, 1).toISOString().split('T')[0]
        );