Javascript - 为月数组赋值
Javascript - Assign values to month array
有一个来自 AJAX 请求的日期结果集,我想创建一个长度为 12 的数组,其中包含这些日期每个月的订单数量,目的是制作图表ChartJS.
例如,如果数据库在 1 月下达了 12 个订单,则数组的 0 索引中将包含数字 12。
问题是我的代码这样看起来很糟糕,如果我想每天晚些时候做,我将有一个包含 31 个案例的 switch(那看起来真的很乱)。
代码有效,但我想要一种更有效的方法。
// Array with quantity of orders per month
var meses= [0,0,0,0,0,0,0,0,0,0,0,0];
for(var i in data) {
// Create new Date from each orderDate
var originalDate = data[i].orderDate;
var myDate= new Date(Date.parse(laFechaOriginal));
var elMes = myDate.getMonth();
// According to the month number, the same index number in the array will increment its value by 1
switch(elMes) {
case 0:
meses[0] += 1;
break;
case 1:
meses[1] += 1;
break;
case 2:
meses[2] += 1;
break;
case 3:
meses[3] += 1;
break;
case 4:
meses[4] += 1;
break;
case 5:
meses[5] += 1;
break;
case 6:
meses[6] += 1;
break;
case 7:
meses[7] += 1;
break;
case 8:
meses[8] += 1;
break;
case 9:
meses[9] += 1;
break;
case 10:
meses[10] += 1;
break;
case 11:
meses[11] += 1;
break;
}
}
以变量为索引访问数组:
meses[elMes] += 1;
其中肯定有一些您可以改进的地方,但它们对效率的影响可以忽略不计:
在现代引擎中,您可以将数组初始化替换为 Array.prototype.fill
var meses = Array(12).fill( 0 );
如果 data
是一个数组,您应该 not use a for .. in 循环遍历它。您可以将其替换为正常的计数循环:
for ( var i = 0; i < data.length; i++ )
Date constructor 已经隐式调用了 Date.parse,因此您可以删除对 Date.parse 的调用:
var myDate= new Date(laFechaOriginal);
您可以将整个 switch 语句替换为:
meses[elMes]++;
有一个来自 AJAX 请求的日期结果集,我想创建一个长度为 12 的数组,其中包含这些日期每个月的订单数量,目的是制作图表ChartJS.
例如,如果数据库在 1 月下达了 12 个订单,则数组的 0 索引中将包含数字 12。
问题是我的代码这样看起来很糟糕,如果我想每天晚些时候做,我将有一个包含 31 个案例的 switch(那看起来真的很乱)。
代码有效,但我想要一种更有效的方法。
// Array with quantity of orders per month
var meses= [0,0,0,0,0,0,0,0,0,0,0,0];
for(var i in data) {
// Create new Date from each orderDate
var originalDate = data[i].orderDate;
var myDate= new Date(Date.parse(laFechaOriginal));
var elMes = myDate.getMonth();
// According to the month number, the same index number in the array will increment its value by 1
switch(elMes) {
case 0:
meses[0] += 1;
break;
case 1:
meses[1] += 1;
break;
case 2:
meses[2] += 1;
break;
case 3:
meses[3] += 1;
break;
case 4:
meses[4] += 1;
break;
case 5:
meses[5] += 1;
break;
case 6:
meses[6] += 1;
break;
case 7:
meses[7] += 1;
break;
case 8:
meses[8] += 1;
break;
case 9:
meses[9] += 1;
break;
case 10:
meses[10] += 1;
break;
case 11:
meses[11] += 1;
break;
}
}
以变量为索引访问数组:
meses[elMes] += 1;
其中肯定有一些您可以改进的地方,但它们对效率的影响可以忽略不计:
在现代引擎中,您可以将数组初始化替换为 Array.prototype.fill
var meses = Array(12).fill( 0 );
如果 data
是一个数组,您应该 not use a for .. in 循环遍历它。您可以将其替换为正常的计数循环:
for ( var i = 0; i < data.length; i++ )
Date constructor 已经隐式调用了 Date.parse,因此您可以删除对 Date.parse 的调用:
var myDate= new Date(laFechaOriginal);
您可以将整个 switch 语句替换为:
meses[elMes]++;