Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简化重复多次的对象数组的方法_Javascript_Arrays_Object - Fatal编程技术网

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

Javascript 简化重复多次的对象数组的方法,javascript,arrays,object,Javascript,Arrays,Object,我想知道我是否可以简化并使用更少的代码行: 我有一个名为“worker”的类,该类有一个从一系列简单数组中读取属性(名称、年龄等)的方法 在那之前,一切都很好。现在,我要添加的一个属性是一个布尔值,它引用了工作人员在一年中的哪个月处于活动状态。目前,我已经这样解决了这个问题: var months_worker_1 = [{"jan":true},{"feb":true},{"mar":true},{"apr":false}] //and so on 然后,我的属性读取months\u wor

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

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

在那之前,一切都很好。现在,我要添加的一个属性是一个布尔值,它引用了工作人员在一年中的哪个月处于活动状态。目前,我已经这样解决了这个问题:

var months_worker_1 = [{"jan":true},{"feb":true},{"mar":true},{"apr":false}] //and so on
然后,我的属性读取
months\u worker\u 1
,但我为每个worker都有一个这样的数组。我想知道是否有一种方法可以做到这一点,它需要更少的代码行,例如,创建一个包含一年中所有月份的“主”数组,并在每个工作人员的数组中指定他们正在工作的月份。这些月份变为“真”,其余月份自动变为“假”,而无需指定其他月份。。。我挠头已经有一段时间了,目前只有我目前的系统运行良好,但我猜一定有更简单的方法

非常感谢


编辑:我澄清,没有“大局”。我正在做一些练习,试图学习javascript,这一次引起了我的兴趣,因为我认为解决方案太复杂了(多次重复相同的数组)。我不需要实现任何特定的目标,我只是在学习如何做到这一点。

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

111111
(十二个月)

如果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

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

111111
(十二个月)

如果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

有很多种方法,但你必须选择最好的方法,并牢记全局。我们还没有看到,你是对的。我编辑了我的信息来解释什么是我的大局。有很多方法,但你必须选择最好的方法,记住大局。我们还没有看到,你是对的。我编辑了我的信息来解释我的大局。这是一个非常好的主意。我现在将尝试使用它制作一些示例…我将使用数组版本;它更清晰,更具可扩展性(例如,您可以使用它从Date对象获取信息,或将其索引到带有月份名称和信息的自定义数组中)。这是一个非常好的主意。我现在将尝试使用它制作一些示例…我将使用数组版本;它更清晰、更可扩展(例如,您可以使用它从Date对象获取信息,或将其索引到带有月份名称和信息的自定义数组中)。