gpt4 book ai didi

javascript - 重构和压缩 JSON 对象

转载 作者:行者123 更新时间:2023-11-30 17:04:06 25 4
gpt4 key购买 nike

有很多关于格式化 JSON 的帖子,但我找不到适合我的奇怪情况的帖子......这是我的数据源:

data = [{ "LoanOfficer": "Brett", "Year": 2014, "Month": 10, "FundedVolume": 304032.0000, "FundedUnits": 2.0000, "NewAppUnits": 2.0000, "RateLockUnits": 1.0000 },
{ "LoanOfficer": "Brett", "Year": 2014, "Month": 11, "FundedVolume": 179450.0000, "FundedUnits": 1.0000, "NewAppUnits": 1.0000, "RateLockUnits": 3.0000 },
{ "LoanOfficer": "Carlos", "Year": 2014, "Month": 10, "FundedVolume": 576615.0000, "FundedUnits": 3.0000, "NewAppUnits": 5.0000, "RateLockUnits": 3.0000 },
{ "LoanOfficer": "Carlos", "Year": 2014, "Month": 11, "FundedVolume": 341303.0000, "FundedUnits": 2.0000, "NewAppUnits": 5.0000, "RateLockUnits": null },
{ "LoanOfficer": "Carlos", "Year": 2014, "Month": 12, "FundedVolume": null, "FundedUnits": null, "NewAppUnits": null, "RateLockUnits": 1.0000 },
{ "LoanOfficer": "Elaine", "Year": 2014, "Month": 10, "FundedVolume": null, "FundedUnits": null, "NewAppUnits": 1.0000, "RateLockUnits": 1.0000 },
{ "LoanOfficer": "Elaine", "Year": 2014, "Month": 11, "FundedVolume": 348500.0000, "FundedUnits": 2.0000, "NewAppUnits": 1.0000, "RateLockUnits": 1.0000 },
{ "LoanOfficer": "Eric", "Year": 2014, "Month": 10, "FundedVolume": 768464.0000, "FundedUnits": 6.0000, "NewAppUnits": 5.0000, "RateLockUnits": 7.0000 }];

因此,您可以看到同一个 LoanOfficer 有多个条目。理想情况下,我想重新格式化并总结它,以便每个 LoanOfficer 只有一个条目,并将 FundedVolume & *Units 添加到此:

data = [{ "LoanOfficer": "Brett", "FundedVolume": 483482.0000, "FundedUnits": 3.0000, "NewAppUnits": 3.0000, "RateLockUnits": 4.0000 },
{ "LoanOfficer": "Carlos", "FundedVolume": 917918.0000, "FundedUnits": 5.0000, "NewAppUnits": 10.0000, "RateLockUnits": 4.0000 },
{ "LoanOfficer": "Elaine", "FundedVolume": 348500.0000, "FundedUnits": 2.0000, "NewAppUnits": 2.0000, "RateLockUnits": 2.0000 },
{ "LoanOfficer": "Eric", "FundedVolume": 768464.0000, "FundedUnits": 6.0000, "NewAppUnits": 5.0000, "RateLockUnits": 7.0000 }];

我尝试以此为起点,但我很确定这不是正确的路线。

var UniqueD = {};
$.each(data, function () {
i = 0;
if (UniqueD[this.LoanOfficer])
i = UniqueD[this.LoanOfficer];
UniqueD[this.LoanOfficer] = i + this.NewAppUnits;
});

编辑:我有一个工作函数可以准确地给出我想要的:

var rawdata = [...] // data source
var listOfOfficerStats = []; // new data
function Combine() {
for (i = 0; i < rawData.length; i++)
{
var loExist = -1;
for (j = 0; j < listOfOfficerStats.length; j++)
{
if (listOfOfficerStats[j].LoanOfficer == rawData[i].LoanOfficer)
loExist = j;
}

if (loExist == -1)
{
//New
var newObject = new Object();
newObject.LoanOfficer = rawData[i].LoanOfficer;
newObject.FundedVolume = rawData[i].FundedVolume;
newObject.FundedUnits = rawData[i].FundedUnits;
newObject.NewAppVolume = rawData[i].NewAppVolume;
newObject.NewAppUnits = rawData[i].NewAppUnits;
newObject.RateLockVolume = rawData[i].RateLockVolume;
newObject.RateLockUnits = rawData[i].RateLockUnits;
listOfOfficerStats.push(newObject);
}
else
{
//Add To Existing
listOfOfficerStats[loExist].FundedVolume += rawData[i].FundedVolume;
listOfOfficerStats[loExist].FundedUnits += rawData[i].FundedUnits;
listOfOfficerStats[loExist].NewAppVolume += rawData[i].NewAppVolume;
listOfOfficerStats[loExist].NewAppUnits += rawData[i].NewAppUnits;
listOfOfficerStats[loExist].RateLockVolume += rawData[i].RateLockVolume;
listOfOfficerStats[loExist].RateLockUnits += rawData[i].RateLockUnits;
}
}
}

最佳答案

这是一个通用函数:

function sum(data, key, fields) {
return data.reduce(function(out, rec) {
var k = rec[key];
out[k] = out[k] || {};
fields.forEach(function(f) {
out[k][f] = (out[k][f] || 0) + (rec[f] || 0);
});
return out;
}, {})
}


// test


data = [{ "LoanOfficer": "Brett", "Year": 2014, "Month": 10, "FundedVolume": 304032.0000, "FundedUnits": 2.0000, "NewAppUnits": 2.0000, "RateLockUnits": 1.0000 },
{ "LoanOfficer": "Brett", "Year": 2014, "Month": 11, "FundedVolume": 179450.0000, "FundedUnits": 1.0000, "NewAppUnits": 1.0000, "RateLockUnits": 3.0000 },
{ "LoanOfficer": "Carlos", "Year": 2014, "Month": 10, "FundedVolume": 576615.0000, "FundedUnits": 3.0000, "NewAppUnits": 5.0000, "RateLockUnits": 3.0000 },
{ "LoanOfficer": "Carlos", "Year": 2014, "Month": 11, "FundedVolume": 341303.0000, "FundedUnits": 2.0000, "NewAppUnits": 5.0000, "RateLockUnits": null },
{ "LoanOfficer": "Carlos", "Year": 2014, "Month": 12, "FundedVolume": null, "FundedUnits": null, "NewAppUnits": null, "RateLockUnits": 1.0000 },
{ "LoanOfficer": "Elaine", "Year": 2014, "Month": 10, "FundedVolume": null, "FundedUnits": null, "NewAppUnits": 1.0000, "RateLockUnits": 1.0000 },
{ "LoanOfficer": "Elaine", "Year": 2014, "Month": 11, "FundedVolume": 348500.0000, "FundedUnits": 2.0000, "NewAppUnits": 1.0000, "RateLockUnits": 1.0000 },
{ "LoanOfficer": "Eric", "Year": 2014, "Month": 10, "FundedVolume": 768464.0000, "FundedUnits": 6.0000, "NewAppUnits": 5.0000, "RateLockUnits": 7.0000 }];

res = sum(data, "LoanOfficer", ["FundedVolume", "FundedUnits"]);
document.write(JSON.stringify(res));

关于javascript - 重构和压缩 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28325932/

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