最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 14浏览 0评论

基于节点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

是节点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);
发布评论

评论列表 (0)

  1. 暂无评论