我有一个对象和一组对象。我想将数组中的所有对象与单个硬编码对象进行比较,然后替换对象属性匹配的一些值。
单个硬编码对象描述了完整的数据集在正确时应该是什么样子。每个属性的值为 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。
你能帮我解决这个问题吗?
谢谢!
最佳答案
使用预期结果作为模板,然后将属性分配给数组 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; }
关于javascript - 将对象与数组中的对象进行比较并替换键匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48926366/