gpt4 book ai didi

javascript - 使用 javascript 比较两个 JSON 对象并查找缺失值

转载 作者:行者123 更新时间:2023-11-28 18:22:39 25 4
gpt4 key购买 nike

我有两个 JSON 对象 countiesctyIndemcounties 对象包含美国各州的所有县,而 ctyIndem 包含该州按县支付的赔偿金,但不包含尚未付款的县。我需要做的是迭代这两个 JSON,如果 ctyIndem 中缺少一个县,则添加 counties 中缺少的信息。

JS

var counties = [{
FIPS: 1001,
County: "Autauga",
State: "ALABAMA"
}, {
FIPS: 1003,
County: "Baldwin",
State: "ALABAMA"
}, {
FIPS: 1005,
County: "Barbour",
State: "ALABAMA"
}, {
FIPS: 1007,
County: "Bibb",
State: "ALABAMA"
}, {
FIPS: 1009,
County: "Blount",
State: "ALABAMA"
}, {
FIPS: 1011,
County: "Bullock",
State: "ALABAMA"
}];

var ctyIndem = [{
Year: 2015,
State: "ALABAMA",
id: 1001,
County: "Autauga",
Indem: 50
}, {
Year: 2015,
State: "ALABAMA",
id: 1003,
County: "Baldwin",
Indem: 200
}, {
Year: 2015,
State: "ALABAMA",
id: 1005,
County: "Barbour ",
Indem: 1501
}];


counties.forEach(function(a, v) {

if (a.FIPS == ctyIndem[v].id) { //County is present, then is ok
console.log(ctyIndem[v].id);
} else {//County not present, add new info

var temp = [];
temp.push({
Year: ctyIndem[0].Year,
State: a.State,
id: a.FIPS,
County: a.County,
Indem: 0
});
Array.prototype.push.apply(ctyIndem, temp);
}

});

console.log(ctyIndem);

问题是,当我迭代数组并到达县 FIPS 和 id 不匹配的点时,我真的不知道该怎么办。我不断收到 Uncaught TypeError: Cannot read property 'id' of undefined 错误,因为显然没有匹配项。感谢您的帮助。

最佳答案

你的搜索逻辑是错误的。它仅检查 ctyIndem 中相同索引处的元素是否具有匹配的 id。但两个数组中的索引不匹配。您需要搜索整个数组。

执行此操作的一个简单方法是创建一个对象,其键是您要搜索的 ID。然后你可以使用a.FIPS作为索引来查看它是否存在。

var ctyIds = {};
ctyIndem.forEach(function(c) {
ctyIds[c.id] = true;
});

counties.forEach(function(a) {
if (!ctyIds[a.FIPS]) {
ctyIndem.push({
Year: ctyIndem[0].Year,
State: a.State,
id: a.FIPS,
County: a.County,
Indem: 0
});
}
});

关于javascript - 使用 javascript 比较两个 JSON 对象并查找缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39670368/

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