gpt4 book ai didi

javascript - 简化重复多次的对象数组的方法

转载 作者:行者123 更新时间:2023-11-28 02:37:31 26 4
gpt4 key购买 nike

我想知道是否可以为此目的简化并使用更少的代码行:

我有一个名为“worker”的类,该类有一个从一系列简单数组中读取属性(姓名、年龄等)的方法。

在那之前,一切都很好。现在,我要添加的属性之一是一个 bool 值,该值引用工作人员一年中的哪些月份处于事件状态。目前,我已经这样解决了:

var months_worker_1 = [{"jan":true},{"feb":true},{"mar":true},{"apr":false}] //and so on

然后,我的属性显示为 months_worker_1,但我为每个 worker 都有一个类似的数组。我想知道是否有一种方法可以做到这一点,需要更少的代码行,例如,创建一个包含一年中所有月份的“主”数组,并在每个 worker 的数组中,仅指定他们正在工作的月份。这些月份变成“真”,其余月份自动变成“假”,无需指定...我已经挠头一段时间了,目前只有我当前的系统工作正常,但我猜测一定有一个更简单的方法......

非常感谢!

编辑:我澄清一下,没有“大局”。我只是在做一些尝试学习 javascript 的练习,这引起了我的兴趣,因为我认为的解决方案似乎太复杂了(多次重复相同的数组)。我没有需要实现的具体目标,我只是在学习实现这一目标的方法。

最佳答案

我有时使用的一个非常好的技巧是使用二进制数来跟踪固定数量的标志,并将其转换为十进制以便于存储/URL 嵌入/等。让我们假设用户 Mark 是一年中所有月份都活跃。考虑二进制数,其中 1 表示“事件”而 0 表示不活动,Mark 的标志将是:

111111111111(十二个月)

如果 Mark 仅在 1 月、2 月和 12 月期间活跃,则他的标志值为:

11000000001

检查 Mark 在特定月份是否处于事件状态就像检查 Mark 标志中与该月索引相对应的字符是 1 还是 0 一样简单。

这项技术过去曾帮助我通过 URL 发送大量标志的值,同时保持 URL 相当短。当然,您可能不需要这个,但了解一下是件好事:

在 JS 中从二进制转换为十进制很容易:

parseInt(11000000001, 2).toString(10); // returns 1537

反之亦然:

parseInt((1537).toString(2)); // returns 11000000001

编辑

您可以轻松地使用由月份数字组成的数组:

var months_worker_1 = [1, 2, 3]; // this would mean that the user is active during january, february and march

关于javascript - 简化重复多次的对象数组的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13232060/

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