【问题标题】:Merging 2 JSON Arrays with different keys合并 2 个具有不同键的 JSON 数组
【发布时间】:2015-11-18 21:48:26
【问题描述】:

我有两个 JSON 数组,它们的键略有不同。

我的第一个 JSON 有 idnametitle
我的第二个 JSON 有 idtitleforenamenamecompany

那么我是否能够合并这两个数组,每个对象都有相同的键,但其中一些可能是空的?

两个样本数据:

{ "id": 482136, "name": "Not a real company", "anrede": "Firma" }


{ "id": 483958, "titel": "", "anrede": "Herr", "vorname": "Muster", "name": "Mister", "firma": "gmbh", "firmaid": 1111111 }

这应该是我的结果:

[{ "id": 482136, "name": "Not a real company", "anrede": "Firma" ,"titel":"","vorname":"","firma":"","firmaid":""},{ "id": 483958, "titel": "", "anrede": "Herr", "vorname": "Gerry", "name": "Example", "firma": "example Company", "firmaid": 483955 }]

提前感谢您的帮助!

【问题讨论】:

  • 请提供一些代码。到目前为止你有什么?
  • 我尝试通过 json1.concat(json2) 连接它们,但这只是将第二个 JSON 对象添加到第一个 JSON。
  • 请至少提供一个示例,显示两个输入对象以及您想要获得的结果。
  • 对象是否共享相同的id

标签: javascript jquery arrays json merge


【解决方案1】:

我有两个 JSON 数组,它们的键略有不同。

请注意,这些实际上是对象,而不是数组

使用for … in 遍历每个对象中的每个属性,为另一个对象中缺少的属性分配一个空字符串:

var j1={ "id": 482136, "name": "Not a real company", "anrede": "Firma" },
    j2={ "id": 483958, "titel": "", "anrede": "Herr", "vorname": "Pascal", "name": "Ackermann", "firma": "das druckhaus beineke dickmanns gmbh", "firmaid": 483955 };

for(var key in j1) {
  if(!j2[key]) j2[key]= '';
};

for(var key in j2) {
  if(!j1[key]) j1[key]= '';
};

document.querySelector('pre').innerHTML= JSON.stringify(j1,null,2)+'\n'+JSON.stringify(j2,null,2);
<pre></pre>

【讨论】:

  • 就是这样!感谢您的简单回答。哦,是的,对不起我的错误。这两者都是对象。但我有 2 个数组,其中包含大量(~ 2300)个对象。
  • 数组是对象的类型,但它们具有有序的索引属性(0、1、2、3)而不是无序的键(“id”、“name”、 “anrede”)。
  • 如果 j1 或 j2 只是每个数组的一部分,是否也可以这样做?
  • 你能举个例子吗?
  • 键总是idtitleforenamenamecompany?如果是这样,我会建议使用大量数据,采用不同的方法。
猜你喜欢
  • 1970-01-01
  • 2016-06-09
  • 2018-09-21
  • 2018-03-04
  • 1970-01-01
  • 2016-04-16
  • 2011-08-18
  • 1970-01-01
相关资源
最近更新 更多