JSON对象到数组的Javascript Lodash解析 [关闭]。

问题描述 投票:0回答:1

我有以下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链接-&gt.https/codesandbox.ioslogic-1-6bkgs?file=srcindex.js。https:/codesandbox.ioslogic-1-6bkgs?file=srcindex.js。

是否有任何库我可以在这里使用这个目的?谢谢你

javascript json algorithm lodash
1个回答
1
投票

这是不平凡的

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)
© www.soinside.com 2019 - 2024. All rights reserved.