javascript - 如何使用 javascript 填充数组中缺失的月份

标签 javascript arrays

有没有办法在不完整的数组中完成缺失的月份和销售。

有时我会收到这样的查询:

var sales = [

    {'month': '04', 'sale': 126},
    {'month': '06', 'sale': 165},
    {'month': '07', 'sale': 10},
    {'month': '08', 'sale': 20},
    {'month': '09', 'sale': 211},
    {'month': '10', 'sale': 27},
    {'month': '11', 'sale': 112},
];

我需要添加缺少的销售月份:0。

我想我可以制作第二个包含所有月份的数组,然后比较这两个数组并选择所有月份数组的重复项:

var compareArray = [

    {'month': '01', 'sale': 0},
    {'month': '02', 'sale': 0},
    {'month': '03', 'sale': 0},
    {'month': '04', 'sale': 0},
    {'month': '05', 'sale': 0},
    {'month': '06', 'sale': 0},
    {'month': '07', 'sale': 0},
    {'month': '08', 'sale': 0},
    {'month': '09', 'sale': 0},
    {'month': '10', 'sale': 0},
    {'month': '11', 'sale': 0},
    {'month': '12', 'sale': 0},
];

最佳答案

您可以使用 Array(12).keys() 并使用 Array.from 将其映射到所需的值,而不是预先定义 12 个条目的数组输出:

var sales = [{'month': '04', 'sale': 126}, {'month': '06', 'sale': 165}, {'month': '07', 'sale': 10},  {'month': '08', 'sale': 20}, {'month': '09', 'sale': 211}, {'month': '10', 'sale': 27}, {'month': '11', 'sale': 112}];

sales = Array.from(Array(12).keys(), month => 
    sales.find(sale => +sale.month === month+1) || { month: ("0"+(month+1)).substr(-2), sale: 0 }
);

console.log(sales);

关于javascript - 如何使用 javascript 填充数组中缺失的月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51768563/

相关文章:

javascript - 在 ERB 中调用带参数的 ruby​​ 方法?

javascript - 将函数变量值传递给javascript中的新变量

javascript - 如何使用 Jquery 仅在图标单击时显示日期选择器?

javascript - 为什么这个js数组函数不起作用?

java - Java中字符串数组的复制构造函数

javascript - 如何从 DIV 中调用此脚本?

javascript - 无法从 React Form 中的选择组件取回提交的数据

arrays - 在go中删除或调整数组大小

javascript - 在 Javascript 中对嵌套数组使用拼接

java - 在 Java 中,为什么类 "Arrays"是复数?