javascript - 删除重复项并合并 JSON 对象

标签 javascript json

我有以下 JSON 对象。我需要删除重复项并使用纯 Javascript 合并内部对象。我该怎么做?

[{
    "id" : 1,
    "name" : "abc",
    "nodes" :[
        {
            "nodeId" : 20,
            "nodeName" : "test1"
        }
    ]
},
{
    "id" : 1,
    "name" : "abc",
    "nodes" :[
        {
            "nodeId" : 21,
            "nodeName" : "test2"
        }
    ]
}]

以下是我期望作为输出的对象。

[{
    "id" : 1,
    "name" : "abc",
    "nodes" :[
        {
            "nodeId" : 20,
            "nodeName" : "test1"
        },
        {
            "nodeId" : 21,
            "nodeName" : "test2"
        },
    ]
}]

问候。

雪茄

最佳答案

首先将JSON转成Javascript数组,方便访问:

var arr = JSON.parse(json);

然后为结果创建一个数组并循环遍历项目并与您放入结果的项目进行比较:

var result = [];

for (var i = 0; i < arr.length; i++) {
  var found = false;
  for (var j = 0; j < result.length; j++) {
    if (result[j].id == arr[i].id && result[j].name == arr[i].name) {
      found = true;
      result[j].nodes = result[j].nodes.concat(arr[i].nodes);
      break;
    }
  }
  if (!found) {
    result.push(arr[i]);
  }
}

如果这是您需要的最终结果,您可以从数组创建 JSON:

json = JSON.stringify(result);

关于javascript - 删除重复项并合并 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26233959/

相关文章:

java - 哪个版本的 ipad 操作系统支持 ckeditor...?

javascript - jquery 选择器 - 除了最后 3 条记录之外的表的所有行

java - 如何使用 AJAX 查询动态填充 Google Chart,获取 DOM 异常 8

python - 使用 python 3 抓取 Json

javascript - React 子组件可以更改存储在其父组件中的数据吗?

javascript - 页面加载时 Angular 过滤器和打开 Accordion 的问题

基于 css 的页面中的 Javascript 随机图像生成器

iphone - iPhone 应用程序后端示例

java - 是否有 jackson 注释来抑制不必要的 JSON 包装?

json - 如何格式化具有多个对象返回的 json 结构? (动态的)