繁体   English   中英

比较对象与数组中的对象,并在键匹配的地方替换值

[英]Compare object with objects in array and replace value where key match

我有一个对象和一组对象。 我想将数组中的所有对象与单个硬编码对象进行比较,然后在对象属性匹配的地方替换一些值。

单个硬编码对象描述了正确的完整数据集的外观。 每个属性的值为null。 如果该属性与单个属性中的任何一个属性匹配,则该值应替换为数组中任何对象的值。

// single object (hard coded)

var completeDataSet = {
  jan: null,
  jan;prognosis: null,
  feb: null,
  feb;prognosis: null,
  mar: null,
  mar;prognosis: null,
  apr: null,
  apr;prognosis: null,
  may: null,
  may;prognosis: null,
  jun: null,
  jun;prognosis: null,
  jul: null,
  jul;prognosis: null,
  aug: null,
  aug;prognosis: null,
  sep: null,
  sep;prognosis: null,
  oct: null,
  oct;prognosis: null,
  nov: null,
  nov;prognosis: null,
  dec: null,
  dec;prognosis: null
}

对象数组可能看起来像这样:

//Array of objects with missing properties
var data = [{
  jan: 0.258,
  jan;prognosis: false,
  feb: 15.256,
  feb;prognosis: false,
  apr: 0.0156,
  apr;prognosis: true,
  oct: 1.235,
  oct;prognosis: true,
  nov: 3.587,
  nov;prognosis: false
},{
  feb: 12.154,
  feb;prognosis: true,
  apr: 1.015,
  apr;prognosis: true,
  sep: 0.235,
  sep;prognosis: false,
  oct: 15.201,
  oct;prognosis: true,
  nov: 12.158,
  nov;prognosis: false,
  dec: 125.152,
  dec;prognosis: true
}];

我希望最终结果看起来像这样:

var correctArrayOfData = [{
  jan: 0.258,
  jan;prognosis: false,
  feb: 15.256,
  feb;prognosis: false,
  mar: null,
  mar;prognosis: null,
  apr: 0.0156,
  apr;prognosis: true,
  may: null,
  may;prognosis: null,
  jun: null,
  jun;prognosis: null,
  jul: null,
  jul;prognosis: null,
  aug: null,
  aug;prognosis: null,
  sep: null,
  sep;prognosis: null,
  oct: 1.235,
  oct;prognosis: true,
  nov: 3.587,
  nov;prognosis: false,
  dec: null,
  dec;prognosis: null
},{
  jan: null,
  jan;prognosis: null,
  feb: 12.154,
  feb;prognosis: true,
  mar: null,
  mar;prognosis: null,
  apr: 1.015,
  apr;prognosis: true,
  may: null,
  may;prognosis: null,
  jun: null,
  jun;prognosis: null,
  jul: null,
  jul;prognosis: null,
  aug: null,
  aug;prognosis: null,
  sep: 0.235,
  sep;prognosis: false,
  oct: 15.201,
  oct;prognosis: true,
  nov: 12.158,
  nov;prognosis: false,
  dec: 125.152,
  dec;prognosis: true
}]

如您所见,如果键匹配,则我填写了值,并将不匹配的props和value保留为null。

你能帮我这个忙吗?

谢谢!

将预期结果用作模板,然后将属性分配给数组correctArrayOfData

 var data = [{ jan: 0.258, 'jan;prognosis': false, feb: 15.256, 'feb;prognosis': false, apr: 0.0156, 'apr;prognosis': true, oct: 1.235, 'oct;prognosis': true, nov: 3.587, 'nov;prognosis': false},{ feb: 12.154, 'feb;prognosis': true, apr: 1.015, 'apr;prognosis': true, sep: 0.235, 'sep;prognosis': false, oct: 15.201, 'oct;prognosis': true, nov: 12.158, 'nov;prognosis': false, dec: 125.152, 'dec;prognosis': true}]; var template = { jan: null, 'jan;prognosis': null, feb: null, 'feb;prognosis': null, mar: null, 'mar;prognosis': null, apr: null, 'apr;prognosis': null, may: null, 'may;prognosis': null, jun: null, 'jun;prognosis': null, jul: null, 'jul;prognosis': null, aug: null, 'aug;prognosis': null, sep: null, 'sep;prognosis': null, oct: null, 'oct;prognosis': null, nov: null, 'nov;prognosis': null, dec: null, 'dec;prognosis': null}; var correctArrayOfData = data.map(o => Object.assign(Object.assign({}, template), o)); console.log(correctArrayOfData); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM