如何将原图和json融合_js如何将N个类似的JSON合并成一个

以 TITLE 为 KEY,建立一个 MAP,如果 MAP 中找到指定的 KEY,把对应的数据取出来,合并 details 数组,没找到就把当前记录加进去。完成之后把 MAP 转成数组,如果要保留原顺序,在建 MAP 的同时建一个数组来保持顺序,注意 MAP 和数组的同步。

先思想下上面的思路,我晚点再来补代码

还要先恢复你的原始数据……下次问问题记得把原始数据贴出来

[

{

“title”: “蛮荒记(树下野狐)”,

“details”: {

“page”: {

“from”: 28,

“to”: 29

},

“time”: “2018-3-12 15:45”,

“type”: “标注”

},

“snippet”: “半山红叶如火,层林尽染,被狂风呼卷,仿佛漫漫火海,摇曳跳跃。山坡上衰草起伏不绝,一直连绵到平原上,宛如接天汹涌海浪。”

},

{

“title”: “蛮荒记(树下野狐)”,

“details”: {

“page”: {

“from”: 28,

“to”: 29

},

“time”: “2018-3-12 15:45”,

“type”: “标注”

},

“snippet”: “精锐之师。其座下飞兽也是精挑细选的极为凶猛的灵兽,又经特殊培训,嗜血好杀,见着漫天凶兽,非但毫不畏缩,反倒激起狂暴凶性。”

},

{

“title”: “蛮荒记(树下野狐)”,

“details”: {

“page”: {

“from”: 28,

“to”: 29

},

“time”: “2018-3-12 15:45”,

“type”: “标注”

},

“snippet”: “测试笔记内容”

},

{

“title”: “炎武战神 (xiao少爷)”,

“details”: {

“page”: {

“from”: 2770,

“to”: 2771

},

“time”: “2018-5-10 10:25”,

“type”: “笔记”

},

“snippet”: “这是一条测试的笔记内容”

}

]

然后才是处理代码

// source 引用的是原始数据

// target 是生成的新数据

const target = (() => {

const dict = {};

source.forEach(m => {

let model = dict[m.title];

if (model) {

model.details.push(m.details);

model.snippet.push(m.snippet);

} else {

dict[m.title] = {

title: m.title,

details: [m.details],

snippet: [m.snippet]

}

}

});

return Object.values(dict);

})();

    原文作者:weixin_39989384
    原文地址: https://blog.csdn.net/weixin_39989384/article/details/111725762
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞