现在有个这样的js需求 求大神帮忙

qingwadaxia_1 2017-11-20 11:30:03
早上8点-早上10点 显示50 - 100的随机数
早上10点 - 中午12点 显示 100 - 200的随机数
中午12点 - 下午2点 显示200 - 300的随机数
下午4点以后 显示300 - 500的随机数

请问如何实现呢
...全文
212 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2017-11-20
  • 打赏
  • 举报
回复
  function aa(){
	  var dt = new Date();
	  var h = dt.getHours();
	  var xx = [{min:50,max:100,times:[8,10]},{min:100,max:200,times:[10,12]},{min:200,max:300,times:[12,14]},{min:300,max:500,times:[16,24]}];
	  for (var i = 0 ; i < xx.length;i++ )
	  {
		  if (h>=xx[i]['times'][0] && h<xx[i]['times'][1])
		  {
			  alert(Math.floor(Math.random()*(xx[i]['max']-xx[i]['min'])+xx[i]['min']));
			  break;
		  }
	  }
  }
  aa();
letMeAlone_ 2017-11-20
  • 打赏
  • 举报
回复
1:获取当前时间 2:看看当前时间在哪个时间段 3:输出相应的随机数
qingwadaxia_1 2017-11-20
  • 打赏
  • 举报
回复
真的多谢楼上几位大神,尤其是superwfei 老师 回答非常详细 谢谢
SolidRabbit 2017-11-20
  • 打赏
  • 举报
回复
function bb () { var hour = (new Date()).getHours(); switch (true) { case hour >= 8 && hour < 10: console.log(50 + Math.floor(Math.random()*(100 - 50))); break; case hour >= 10 && hour < 12: console.log(100 + Math.floor(Math.random()*(200 - 100))); break; case hour >= 12 && hour < 16: console.log(200 + Math.floor(Math.random()*(300 - 200))); break; case hour >= 16 && hour < 24: console.log(300 + Math.floor(Math.random()*(500 - 300))); break; } }
文盲老顾 2017-11-20
  • 打赏
  • 举报
回复
引用 楼主 qingwadaxia_1 的回复:
早上8点-早上10点 显示50 - 100的随机数 早上10点 - 中午12点 显示 100 - 200的随机数 中午12点 - 下午2点 显示200 - 300的随机数 下午4点以后 显示300 - 500的随机数 请问如何实现呢
var xx = [ {min:50,max:100,times:[8,10]} ,{min:100,max:200,times:[10,12]} ,{min:200,max:300,times:[12,14]} ,{min:300,max:500,times:[16,24]} ]; 可以明显看出,这个数组定义的内容就完全是你描述的内容,这样才方便维护
文盲老顾 2017-11-20
  • 打赏
  • 举报
回复
至于赋值那一行的格式,完全可以按照自己的描述习惯来定义 例如 var xx = [{开始时间:8,结束时间:10,最小值:50,最大值:100}] 或者 var xx = [{begin:8,end:10,min:50,max:100}] 再或者 var xx = [{开始时间:8,时间延长:2,随机数最小值:50,随机数范围差:50}] 不管怎么赋值,什么格式,只要你自己阅读方便即可,然后在循环或者其他地方按照你自己定义的格式相应调整语句就可以了
文盲老顾 2017-11-20
  • 打赏
  • 举报
回复

function aa(){
      var dt = new Date();
      var h = dt.getHours();
      if (h>=8&&h<10){
          alert(50+Math.floor(Math.random()*50))
      }
      elseif(h>=10&&h<12){
          ....
      }
      ....
}
使用 if else 是没有问题,问题是以后的维护强度,如果按照我在2楼的写法,那么只需要维护一行,也就是给xx赋值的哪一行的数据即可,否则你需要维护的地方就太多了
前端-珊珊 2017-11-20
  • 打赏
  • 举报
回复
如果楼主想要得到的是if else 的,我个人觉得可以得到当前的时间点的数,进行判断。 var hour = new Date().getHours();得到小时再进行判断
qingwadaxia_1 2017-11-20
  • 打赏
  • 举报
回复
我想象中的写法是if()else if() else if() 这类的 比较直观
qingwadaxia_1 2017-11-20
  • 打赏
  • 举报
回复
多谢2楼大神的回答, 只是我觉得稍稍有点复杂 请问还有更简单一点的写法吗
qingwadaxia_1 2017-11-20
  • 打赏
  • 举报
回复
引用 1 楼 a250758092 的回复:
1:获取当前时间 2:看看当前时间在哪个时间段 3:输出相应的随机数
这个道理是懂得 具体不知道怎么 去写

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧