如何在Javascript / Jquery中将键值对添加到数组

Dev*_*vTN 3 javascript arrays jquery

我有以下两个数组

var dataSource = [
{location: "France", January: 79, February: 81, March: 23},  
{location: "Germany", January: 98, February: 83},
{location: "Japan", January: 96, March: 11} ];

var Months = ["January","February","March"];
Run Code Online (Sandbox Code Playgroud)

我想遍历每个对象,dataSource并检查的每个对象中是否都Months存在的所有值dataSource。如果该值不存在,dataSource则将该值添加到dataSourcevalue = 100

例如:在德国,不存在月份“ March”,因此我需要按下键和值 March : 100

最后dataSource应该如下

var dataSource = [
{location: "France", January: 79, February: 81, March: 23},  
{location: "Germany", January: 98, February: 83, March: 100},
{location: "Japan", January: 96, February: 100, March: 11} ];
Run Code Online (Sandbox Code Playgroud)

我尝试了以前线程中的许多解决方案,但没有得到想要的确切结果。这是我的一些想法

var dataSource = [
{location: "France", January: 79, February: 81, March: 23},  
{location: "Germany", January: 98, February: 83},
{location: "Japan", January: 96, March: 11} ];

var Months = ["January","February","March"];
Run Code Online (Sandbox Code Playgroud)

谢谢您的建议。

Ori*_*ori 6

您可以Array.map()用来迭代dataSource数组。使用内部Array.reduce()变量来迭代月份,并向当前对象添加缺少的月份:

const dataSource = [{"location":"France","January":79,"February":81,"March":23},{"location":"Germany","January":98,"February":83},{"location":"Japan","January":96,"March":11}];
const Months = ["January","February","March"];

const result = dataSource.map(o =>
  Months.reduce((obj, m) => m in obj ? obj : { ...obj, [m]: 100 }, o)
);

console.log(result);
Run Code Online (Sandbox Code Playgroud)