我有一个对象和一个对象数组。我想比较数组中的所有对象与单个硬编码对象,然后替换对象属性匹配的一些值。
单个硬编码对象描述完整数据集在正确时的外观。每个属性的值都为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和值保留为null。
请你帮我解决这个问题。
谢谢!
答案 0 :(得分:2)
将预期结果用作模板,然后将属性分配给数组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; }