首页 > 解决方案 > 如何在Javascript / Jquery中将键值对添加到数组中

问题描述

我有2个数组如下

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"];

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

示例:在德国位置,“三月”月份不存在,所以我需要按下键和值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} ];

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

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"];

dataSource.forEach(function(element) {
Months.forEach(function(item) {
  if (!(item in element)) {
//Object.assign(dataSource, {item: 100}); 
//dataSource = {...dataSource, ...{item: 100}}
dataSource.push({item: 100});
  }
});
});

console.log(dataSource);

谢谢你的建议。

标签: javascriptjqueryarrays

解决方案


您可以使用Array.map()来迭代dataSource数组。使用 internalArray.reduce()来迭代 Months,并将缺失的月份添加到当前对象:

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);


推荐阅读