基于节点JS中的唯一ID合并2个以上的Json

编程入门 行业动态 更新时间:2024-10-09 15:14:55

基于<a href=https://www.elefans.com/category/jswz/34/1771452.html style=节点JS中的唯一ID合并2个以上的Json"/>

基于节点JS中的唯一ID合并2个以上的Json

是节点JS的新手,它基于节点JS中的唯一ID合并了2个以上的Json

[
  [
    {
      sourcePguid: '1',
      'urn:reference:000000000000000000000000019318': 'General'
    }
  ],
  [
    {
      sourcePguid: '2',
      'urn:reference:000000000000000000000000019318123': 'General2'
    }
  ]
]
[
  [
    {
      sourcePguid: '1',
      'urn:reference:000000000000000000000000019317': '0'
    },
    {
      sourcePguid: '1',
      'urn:reference:000000000000000000000000019319': '1'
    }
  ],
  [
    {
      sourcePguid: '2',
      'urn:reference:000000000000000000000000019311': '0'
    },
    {
      sourcePguid: '2',
      'urn:reference:000000000000000000000000019312': '1'
    }
  ]
]

例外的输出:

 [
    {
      sourcePguid: '1',
      'urn:reference:000000000000000000000000019318': 'General',
       'urn:reference:000000000000000000000000019317': '0',
       'urn:reference:000000000000000000000000019319': '1'
    },
    {
      sourcePguid: '2',
  'urn:reference:000000000000000000000000019318123': 'General2',
       'urn:reference:000000000000000000000000019311': '0',
       'urn:reference:000000000000000000000000019312': '1'
    },

  ]

请问有没有人能帮助我实现节点JS中的输出。Json将有两个以上具有多个数组的唯一值。

回答如下:

我使用名为lodash的帮助程序库将数组数组展平为一个级别数组

lodash

输出是:

const _ = require('lodash');
const json1 = [
  [
    {
      sourcePguid: '1',
      'urn:reference:000000000000000000000000019318': 'General'
    }
  ],
  [
    {
      sourcePguid: '2',
      'urn:reference:000000000000000000000000019318123': 'General2'
    }
  ]
];
const json2 = [
  [
    {
      sourcePguid: '1',
      'urn:reference:000000000000000000000000019317': '0'
    },
    {
      sourcePguid: '1',
      'urn:reference:000000000000000000000000019319': '1'
    }
  ],
  [
    {
      sourcePguid: '2',
      'urn:reference:000000000000000000000000019311': '0'
    },
    {
      sourcePguid: '2',
      'urn:reference:000000000000000000000000019312': '1'
    }
  ]
];

const mergedJsons = [...json1, ...json2];
const result = _.flattenDepth(mergedJsons)
  .reduce((combined, current) => {
    const combinedObjectIndex = combined.findIndex(lookingFor => lookingFor.sourcePguid === current.sourcePguid);
    if (combinedObjectIndex < 0) {
      // if object is new, lets add it to result array
      combined.push(current);
    } else {
      // if object exists in array, lets merge them together
      combined[combinedObjectIndex] = {..bined[combinedObjectIndex], ...current};
    }

    return combined;
  }, []);

console.log(result);

更多推荐

基于节点JS中的唯一ID合并2个以上的Json

本文发布于:2024-05-07 05:23:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754488.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:节点   JS   Json   ID

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!