javascript - 如何为没有销售的月份添加 0?
问题描述
我有一个数组:
let sales= [
{ _id: { year: 2020, month: 3 }, total_sales: 1800 },
{ _id: { year: 2020, month: 4 }, total_sales: 5700 },
{ _id: { year: 2020, month: 5 }, total_sales: 6630 },
{ _id: { year: 2020, month: 6 }, total_sales: 690 },
{ _id: { year: 2020, month: 7 }, total_sales: 1600 },
{ _id: { year: 2020, month: 8 }, total_sales: 13430 }
]
我想要做的是,将月份转换为名称
let months = []
let sales = []
var m = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"]
for (let i = 0; i < sales.length; i++) {
if (sales.length === 6) {
var monthName = m[sales[i]._id.month - 1]
months.push(monthName)
sales.push(sales[i].total_sales)
}
}
按预期返回以下内容。
["March", "April", "May", "June", "July", "August"]
[1800, 5700, 6630, 690, 1600, 13430]
但是,如果数组中缺少一个月,我该如何重新排列它以显示月份total_sales=0
名称。
展示案例:
[
{ _id: { year: 2019, month: 12 }, total_sales: 1800 },
{ _id: { year: 2020, month: 1 }, total_sales: 5700 },
{ _id: { year: 2020, month: 2 }, total_sales: 6630 },
{ _id: { year: 2020, month: 4 }, total_sales: 690 },
{ _id: { year: 2020, month: 6 }, total_sales: 1600 },
{ _id: { year: 2020, month: 8 }, total_sales: 13430 }
]
预期结果:
["August","September","October","November",
"December","January","February","March", "April",
"May", "June", "July", "August"]
[0, 0, 0, 0, 1800, 5700, 6630, 0, 690, 0, 1600, 0, 13430]
Every 12 month period.
解决方案
下面怎么样
let months = []
let sales = []
var m = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"]
const firstEntry = this.props.salesGraph.sales[0]._id;
const startMonth = firstEntry.year*12+firstEntry.month;
const lastIteratedMonth = startMonth-1;
for (let i = 0; i < this.props.salesGraph.sales.length; i++) {
let currentEntry = this.props.salesGraph.sales[i]._id;
let currentMonth = currentEntry.year*12+currentEntry.month;
while(lastIteratedMonth+1 < currentMonth) {
//Fill missing months with 0
var monthName = m[lastIteratedMonth%12-1];
months.push(monthName);
sales.push(0);
lastIteratedMonth++;
}
let monthName = m[currentEntry.month - 1];
months.push(monthName);
sales.push(this.props.salesGraph.sales[i].total_sales);
lastIteratedMonth++;
}
推荐阅读
- c++ - 选择排序(交换指针而不是数据)
- amazon-web-services - 如何在 AWS Cloudformation 中调试“资源创建超时等待完成”?
- python-3.x - 不同子序列 GCD 的数量
- javascript - 正则表达式不起作用。我的代码有什么问题?谁能帮我解决这个问题
- javascript - 如何在数据集上处理 react-leaflet v3 中的事件?
- python - 在python的for循环之外获取gps3数据(在for循环之外调用类函数)
- c++ - 使用类函数在窗口屏幕上设置卡片位置
- android - 如何在android的TextView中更新一行中的文本?
- angular - 作为内容脚本嵌入的 Angular 应用程序中的 Angular 路由提示
- javascript - 如何更改 ant-design 选项卡的默认边框颜色