var JsonA = [
{ "id":"2020-09-08", "y":0, "desc":"Sep 08" },
{ "id":"2020-09-09", "y":0, "desc":"Sep 09" },
{ "id":"2020-09-10", "y":0, "desc":"Sep 10" },
{ "id":"2020-09-11", "y":0, "desc":"Sep 11" },
{ "id":"2020-09-12", "y":0, "desc":"Sep 12" },
{ "id":"2020-09-13", "y":0, "desc":"Sep 13" },
{ "id":"2020-09-14", "y":0, "desc":"Sep 14" }
];
var JsonB= [
{"id":"2020-09-11", "y":100 },
{"id":"2020-09-14", "y":20 }
];
JsonA.map(item => {
(item.id == JsonB.id) ? (item.y = JsonB.y) : '';
});
console.log("Modified Array", JsonA);
嗨,我是 javascript 新手,如果 id 与 jsonA 和 JsonB 相同,我想将 jsonA 的 y 值替换为 Json B 中的 y 值,但是我的代码没有更改 json A 中的任何内容。预先感谢您的帮助。目前我得到错误的结果,其中 y 都是 0 甚至仍然与 json B 具有相同的 id 预期输出是
[
{ "id":"2020-09-08", "y":0, "desc":"Sep 08" },
{ "id":"2020-09-09", "y":0, "desc":"Sep 09" },
{ "id":"2020-09-10", "y":0, "desc":"Sep 10" },
{ "id":"2020-09-11", "y":100, "desc":"Sep 11" },
{ "id":"2020-09-12", "y":0, "desc":"Sep 12" },
{ "id":"2020-09-13", "y":0, "desc":"Sep 13" },
{ "id":"2020-09-14", "y":20, "desc":"Sep 14" }
];
jsfiddle -->>>> https://jsfiddle.net/0qkvy91L/
最佳答案
您可以使用find
来查找JsonB
中与JsonA
的迭代元素具有相同id的元素,并返回覆盖的值
JsonA = JsonA.map(itemA => {
const itemB = JsonB.find(itemB => itemB.id === itemA.id)
return {
...itemA,
...itemB
}
let JsonA = [
{
id: '2020-09-08',
y: 0,
desc: 'Sep 08'
},
{
id: '2020-09-09',
y: 0,
desc: 'Sep 09'
},
{
id: '2020-09-10',
y: 0,
desc: 'Sep 10'
},
{
id: '2020-09-11',
y: 0,
desc: 'Sep 11'
},
{
id: '2020-09-12',
y: 0,
desc: 'Sep 12'
},
{
id: '2020-09-13',
y: 0,
desc: 'Sep 13'
},
{
id: '2020-09-14',
y: 0,
desc: 'Sep 14'
}
]
let JsonB = [
{
id: '2020-09-11',
y: 100
},
{
id: '2020-09-14',
y: 20
}
]
JsonA = JsonA.map(itemA => {
const itemB = JsonB.find(itemB => itemB.id === itemA.id)
return {
...itemA,
...itemB
}
})
console.log('Modified Array', JsonA)
关于javascript - 如果 id 与 JsonB 相同,则更新 Json 对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63879448/