如何在JavaScript中合并对象内的数组(适配amChart)
合并同ID父节点的JSON数据(适配amChart可折叠力导向树)
当然可以实现。你需要将具有相同ID和NAME的父节点合并,并把它们的children数组整合到一起。以下是用JavaScript实现的方案:
原始数据
[ { "ID": "120", "NAME": "KRETEK", "children": [ { "IDS": "01107", "VALUE": "6761114", "NAME": "GUD" } ] }, { "ID": "120", "NAME": "KRETEK", "children": [ { "IDS": "01108", "VALUE": "57904", "NAME": "POER" } ] } ]
处理代码
const originalData = [ { "ID": "120", "NAME": "KRETEK", "children": [ { "IDS": "01107", "VALUE": "6761114", "NAME": "GUD" } ] }, { "ID": "120", "NAME": "KRETEK", "children": [ { "IDS": "01108", "VALUE": "57904", "NAME": "POER" } ] } ]; // 用对象存储合并后的父节点,以ID为键 const mergedMap = {}; originalData.forEach(item => { const key = item.ID; if (!mergedMap[key]) { // 首次遇到该ID,直接存入对象 mergedMap[key] = { ...item, children: [...item.children] }; } else { // 已有该ID,合并children数组 mergedMap[key].children.push(...item.children); } }); // 将对象的值转为数组,得到最终结果 const mergedData = Object.values(mergedMap); console.log(JSON.stringify(mergedData, null, 4));
处理后结果
[ { "ID": "120", "NAME": "KRETEK", "children": [ { "IDS": "01107", "VALUE": "6761114", "NAME": "GUD" }, { "IDS": "01108", "VALUE": "57904", "NAME": "POER" } ] } ]
这段代码通过遍历原始数据,利用对象的键唯一性来合并相同ID的父节点,最终得到的mergedData就是你需要的格式,可直接用于amChart的可折叠力导向树图表。
内容的提问来源于stack exchange,提问作者Farich T Utomo
相关产品推荐
相关产品推荐

