繁体   English   中英

如何比较两个对象并添加缺失值?

[英]How can I compare two objects and add the missed values?

我想通过对象值“基准”比较两个对象。 就我而言,我想检查“mengeGes”中的“基准”值是否也在“v”对象中。 如果不是,则将“mengeGes”对象的值添加到“v”对象。

在我的示例中,具有“基准”2022-02-22 的对象应从 mengeGes 添加到 v:

 const mengeGes = [{ "Datum": "2022-02-20", "Datum_str": "20.02.2022" }, { "Datum": "2022-02-21", "Datum_str": "21.02.2022" }, { "Datum": "2022-02-22", "Datum_str": "22.02.2022" } ] var v = [{ "Datum": "2022-02-20", "Datum_str": "20.02.2022", "xx": 4 }, { "Datum": "2022-02-21", "Datum_str": "21.02.2022", "xx": 4 } ] // The expected result: v = [{ "Datum": "2022-02-20", "Datum_str": "20.02.2022", "xx": 4 }, { "Datum": "2022-02-21", "Datum_str": "21.02.2022", "xx": 4 }, { "Datum": "2022-02-22", "Datum_str": "22.02.2022" } ] console.log(v)

我们可以创建一个包含“缺失”对象的数组,如下所示:

var missing = mengeGes.filter(menge => v.filter(vv => vv.Datum === menge.Datum).length === 0);

在这里,我们循环遍历mengeGes并通过检查v中是否存在Datum匹配的对象来过滤它


然后,我们可以将该数组与现有的v组合起来:

var combine = [ ...v, ...missing ];

 const mengeGes = [{ "Datum": "2022-02-20", "Datum_str": "20.02.2022" }, { "Datum": "2022-02-21", "Datum_str": "21.02.2022" }, { "Datum": "2022-02-22", "Datum_str": "22.02.2022" } ] var v = [{ "Datum": "2022-02-20", "Datum_str": "20.02.2022", "xx": 4 }, { "Datum": "2022-02-21", "Datum_str": "21.02.2022", "xx": 4 } ]; var missing = mengeGes.filter(menge => v.filter(vv => vv.Datum === menge.Datum).length === 0); var combine = [ ...v, ...missing ]; console.log(combine);


结果:

[
  {
    "Datum": "2022-02-20",
    "Datum_str": "20.02.2022",
    "xx": 4
  },
  {
    "Datum": "2022-02-21",
    "Datum_str": "21.02.2022",
    "xx": 4
  },
  {
    "Datum": "2022-02-22",
    "Datum_str": "22.02.2022"
  }
]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM