为了账号安全,请及时绑定邮箱和手机立即绑定

显示最后一分钟的可变数字的函数

显示最后一分钟的可变数字的函数

米琪卡哇伊 2021-11-25 19:40:57
我正在尝试制作一个仅保留过去一分钟的变量计数的函数。例如,如果我调用函数count100 次,如果这些调用中有 60 次来自过去一分钟,它只会返回 60,而不是 100。这是我到目前为止所尝试的,使变量成为一个数组并在每次调用时向其添加数字,但我不知道如何在一分钟过去后删除计数。var count = 1;var countArray = [];更新:我已经用这个更新了我的代码,但是数组元素没有像他们应该的那样删除,function Count() {  var jNow = new Date();  jCountArray.push(jNow);  for (var i = 0; i <= jCountArray.length; i++) {    var secondsDiff = (new Date(jNow).getTime() - new Date(jCountArray[i]).getTime()) / 1000;    if (secondsDiff >= 10) { jCountArray.shift(); }  }  console.log(jCountArray);  return jCountArray.length;}
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

如果我正确理解了您的要求,并且您唯一需要Count做的就是返回在最后一分钟内被调用的次数,我认为我们可以相对轻松地利用setTimeout以下内容做一些事情:


function getCounter() {

  let count = 0;

  let duration = 60000;

  return function () {

    count = count + 1;

    setTimeout(function () {

      count = count - 1;

    }, duration);

    return count;

  }

}


let counter = getCounter();


function count() {

  console.log(counter());

}

<button onclick="count()">Count</button>


这里唯一的技巧是,为了保持实际的count私有性,我们需要一个工厂函数将它包装在一个闭包中。如果这不重要,您可以将其编写为一个简单的函数并将计数保留在父作用域中。此外,出于测试目的,您可以将 更改duration为较低的毫秒计数以查看其运行情况。


查看完整回答
反对 回复 2021-11-25
  • 1 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信