javascript - 如果 id 与 JsonB 相同,则更新 Json 对象值

标签 javascript

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/

相关文章:

javascript - 如何检测正则表达式是否有匹配项?

javascript - 如果缩放最大/最小,如何忽略 d3.js 缩放行为?

javascript - 发布到查找字段

javascript - 调用事件后等待事件监听器完成

javascript - 如何确保每次使用 React Native 和 AWS 都会导入我的个人资料信息?

javascript - Derby.js - 添加/删除唯一列表元素

javascript - jQuery:从第一个 child 或自身返回文本

javascript - 制作一个像单选按钮一样的div

javascript - iframe src 由 javascript 进行按摩

javascript - 在 Node js 中从字符串创建对象