javascript - 如何在没有一堆 if else 语句的情况下编写这个函数?
问题描述
我基本上只是无法弄清楚这一点,也不想破解它。
如果我一年这样做 52 周,它看起来会很乱。
有小费吗?
更新
这个问题与获取今年的当前周无关。
这个问题是关于自定义日期以来经过几周的时间。
我希望下周的锻炼出现在本周的第 6 天;)
例子
我从开始的日子是 99: 2018-05-30 18:39:29。
你的一些例子在第 15 周向我展示。
然而,我的代码显示第 16 周,这是正确的。看到警告了吗?
calculateUsersCurrentWorkoutWeek: function(timestamp) {
let daysSinceSignup = moment().diff(timestamp, "days");
if (daysSinceSignup <= 6) {
return 1;
} else if (daysSinceSignup > 6 && daysSinceSignup <= 13) {
return 2;
} else if (daysSinceSignup > 13 && daysSinceSignup <= 20) {
return 3;
} else if (daysSinceSignup > 20 && daysSinceSignup <= 27) {
return 4;
} else if (daysSinceSignup > 27 && daysSinceSignup <= 34) {
return 5;
} else if (daysSinceSignup > 34 && daysSinceSignup <= 41) {
return 6;
} else if (daysSinceSignup > 41 && daysSinceSignup <= 48) {
return 7;
} else if (daysSinceSignup > 48 && daysSinceSignup <= 55) {
return 8;
} else if (daysSinceSignup > 55 && daysSinceSignup <= 62) {
return 9;
} else if (daysSinceSignup > 55 && daysSinceSignup <= 62) {
return 10;
} else if (daysSinceSignup > 62 && daysSinceSignup <= 69) {
return 11;
} else if (daysSinceSignup > 69 && daysSinceSignup <= 76) {
return 12;
} else if (daysSinceSignup > 76 && daysSinceSignup <= 83) {
return 13;
} else if (daysSinceSignup > 83 && daysSinceSignup <= 90) {
return 14;
} else if (daysSinceSignup > 90 && daysSinceSignup <= 97) {
return 15;
} else {
return 16;
}
}
解决方案
除以 7 和 ceil?
const daysSinceSignup = moment().diff(timestamp, "days");
return Math.ceil(daysSinceSignup / 7);
你今天早上错过了咖啡吗?;-)
注意:上面的函数会告诉你“从那以后的周数timestamp
”,这是我从你的文字中理解的,但你的代码示例并没有反映它。
要获得与代码示例相同的结果,您需要.floor()
添加 1 而不是.ceil()
:
const daysSinceSignup = moment().diff(timestamp, "days");
return Math.floor(daysSinceSignup / 7) + 1;
推荐阅读
- python - Python:df['a']str.contains() 可以有多个条件吗?
- docker - 无法使用 dockerfile 在容器中移动文件
- c - 仅使用寄存器的 2 个 Arduino Uno 之间的串行通信
- javascript - 正则表达式将驼峰大小写转换为普通句子,同时将一些转换为大写
- tcp - Wireshark如何通过头域判断一个协议是SMTP还是TCP?
- r - 在 purrr() 中使用 optim() 时出错:vmmin 不是有限的
- node.js - 第一次使用 node.js X 未定义
- python - 在python中的字符串匹配后无法删除行
- javascript - 返回映射行 NULL
- systemjs - 如何在我的 angular9 项目中使用 SystemJS