【问题标题】:vanilla JS for-loop issuevanilla JS for循环问题
【发布时间】:2020-08-08 20:59:47
【问题描述】:

在 rosteringArray() 的整个 for 循环中,array 应该是这样的。

array[0] = startDate(以毫秒为单位)

array[1] = startDate(以毫秒为单位)+ 86400000

...

array[array.length-1] = endDate(以毫秒为单位)

但事实并非如此。

如何开发此代码?

var rosteringArray = function(yy1, mm1, dd1, yy2, mm2, dd2){
  var date = new Date(yy1,mm1,dd1);
  var sDate = new Date(date);

  var timeStart = date.getTime() + 86400000*9; //

  var date = new Date(yy2,mm2,dd2);
  var sDate = new Date(date);

  var timeEnd = date.getTime() + 86400000*9;

  var end = timeStart;
  var start = timeEnd;
  
  var countDateBetween = (end - start)/86400000 +1;
  var array = new Array;
  for (var g = 0; g < countDateBetween; g++){
    for (var h =setStart; h < setEnd; h=h+86400000){
    array[g] = h;
    return array;
    }
  }
}

console.log(rosteringArray(2020,0,1,2020,0,03));

【问题讨论】:

  • 在处理 2 个日期集时,您需要使用唯一的变量名。第二个声明只是覆盖第一个声明,因为它们的名称相同。

标签: javascript for-loop scope return


【解决方案1】:

您混合了属性值:

var end = timeStart; var start = timeEnd;

并且您不需要第二个循环,它将始终为数组中的所有属性设置最后一天的值。

看看工作的sn-p:

var rosteringArray = function(yy1, mm1, dd1, yy2, mm2, dd2){
  var date = new Date(yy1,mm1,dd1);
  var sDate = new Date(date);

  var timeStart = date.getTime() + 86400000*9; //

  var date = new Date(yy2,mm2,dd2);
  var sDate = new Date(date);

  var timeEnd = date.getTime() + 86400000*9;

  var end = timeEnd;
  var start = timeStart;
  console.log(start);
  console.log(end);
  
  var countDateBetween = (end - start)/86400000 +1;
  console.log(countDateBetween);
  var array = new Array;
  var h =start;
  for (var g = 0; g < countDateBetween; g++){
    
    array[g] = h;
    h=h+86400000;
    }
return array;
}

console.log(rosteringArray(2020,0,1,2020,0,03));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 2013-02-27
    • 2018-12-27
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    相关资源
    最近更新 更多