gpt4 book ai didi

javascript - 将对象与数组中的对象进行比较并替换键匹配的值

转载 作者:行者123 更新时间:2023-12-01 02:24:26 26 4
gpt4 key购买 nike

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

单个硬编码对象描述了完整的数据集在正确时应该是什么样子。每个属性的值为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com