如何使用JavaScript填写数组中的缺失月份

Gre*_*try 2 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},
];
Run Code Online (Sandbox Code Playgroud)

我需要添加销售缺失的月份: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},
];
Run Code Online (Sandbox Code Playgroud)

tri*_*cot 5

您可以使用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);
Run Code Online (Sandbox Code Playgroud)