gpt4 book ai didi

javascript - 有没有最简单的方法来计算循环日?

转载 作者:行者123 更新时间:2023-12-02 22:08:52 25 4
gpt4 key购买 nike

我有一个以数字格式从数据库收到的重复数据。

我有一个复选框,显示具有以下值的日期:

[64, 32, 16, 8, 4, 2, 1] // monday to sunday

这就是我如何将它们重新定义到 list 中,以便我可以在复选框中显示:

switch (recurring) {
case 127:
this.checkedList = [64, 32, 16, 8, 4, 2, 1];
break;
case 126:
this.checkedList = [64, 32, 16, 8, 4, 2];
break;
case 125:
this.checkedList = [64, 32, 16, 8, 4, 1];
break;
case......
default:
this.checkedList = [recurring];
}

但我认为这不是一个好的做法,因为它需要很长的代码来执行结果。有什么办法可以让它变得更简单吗?

最佳答案

这些是二的幂,用于 bit field .

您应该使用按位运算符&来判断给定日期是否已“检查”。

const SUNDAY   = 64; // 0100 0000
const SATURDAY = 32; // 0010 0000
const FRIDAY = 16; // 0001 0000
const THURSDAY = 8; // 0000 1000
// etc.

let day = 48; // 0011 0000

day & SUNDAY // 0 indicating Sunday should not be checked
day & SATURDAY // 32 indicating Saturday should be checked
day & FRIDAY // 16 indicated Friday should be checked
day & THURSDAY // 0 indicated Thursday should not be checked

如果您想将其转换为检查值数组,最简单的选择是停止使用位字段,而是存储 JSON 字符串数组。

假设这是不可能的,您的案例陈述可以替换为简单的内容,例如...

const DAYS = [ 1, 2, 4, 8, 16, 32, 64 ];

const dayBitfield = 41;

DAYS.filter(day => dayBitfield & day) // [1, 8, 32]

关于javascript - 有没有最简单的方法来计算循环日?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59621582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com