我有以下JSON格式
{
SYS1_DATA: "s-1,s2,s3,\ns-4,s-5,s-6,s-7",
SYS2_DATA: "s1,s2,s3,\ns4,s5,s6,s7",
COMPARE: [
{
cell_no: 2,
line_no: 0
},
{
cell_no: 3,
line_no: 1
},
{
cell_no: 4,
line_no: 1
}
]
},
{
SYS1_DATA: "cs-1,cs2,cs3,\ncs-4,cs-5,cs-6,cs-7",
SYS2_DATA: "cs1,cs2,cs3,\ncs4,cs5,cs6,cs7",
COMPARE: [
{
cell_no: 2,
line_no: 1
}
]
}
];
我的要求是解析这个对象,并将特定的单元格从比较参考中高亮显示回UI。(这类似于DIFF功能,但更多的是根据具体要求定制)
使用的情况是 - Syn1data 和 Sync2data 都需要进行比较,并且有一个可能的列表(在 JSON 中共享),情况 1:解析所有数据,将 syn1data 和 sync2data 覆盖到数组中,并高亮显示特定单元格的单元格号和行号(从 Compare 数组中获取这些信息)。情况 2:预期的输出将像这个例子一样。
SYS1_DATA: "s-1,s2,s3,\n<span class='error'>s-4</span>,s-5,s-6,s-7",
SYS2_DATA: "s1,s2,s3,\n<span class='error'>s4</span>,s5,s6,s7",
以显示不同的单元格值,这是我的进程中的codexandbox链接->.https/codesandbox.ioslogic-1-6bkgs?file=srcindex.js。https:/codesandbox.ioslogic-1-6bkgs?file=srcindex.js。
是否有任何库我可以在这里使用这个目的?谢谢你
这是不平凡的
const data = [{ SYS1_DATA: "s-1,s2,s3,\ns-4,s-5,s-6,s-7", SYS2_DATA: "s1,s2,s3,\ns4,s5,s6,s7", COMPARE: [{ cell_no: 2, line_no: 0 }, { cell_no: 3, line_no: 1 }, { cell_no: 4, line_no: 1 } ] }, { SYS1_DATA: "cs-1,cs2,cs3,\ncs-4,cs-5,cs-6,cs-7", SYS2_DATA: "cs1,cs2,cs3,\ncs4,cs5,cs6,cs7", COMPARE: [{ cell_no: 2, line_no: 0 }] } ];
const processLines = (sys, compare) =>
sys.split("\n")
.map((line, i) => line
.split(",")
.map(
(cell, j) => compare.find(o => o.line_no === i && o.cell_no === j) ?
`<span>${cell}</span>` : cell
)
);
const process = (sys1, sys2, compare) => {
sys1 = processLines(sys1, compare)//.flat();
sys2 = processLines(sys2, compare)//.flat();
return {
sys1: sys1,
sys2: sys2
}
};
const res = data.map(item => process(item.SYS1_DATA, item.SYS2_DATA, item.COMPARE))
console.log(res)