首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON Object to Array Javascript Lodash解析

JSON Object to Array Javascript Lodash解析
EN

Stack Overflow用户
提问于 2020-05-08 21:06:54
回答 1查看 38关注 0票数 0

我有以下JSON

代码语言:javascript
复制
  {
    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解析到数组,并突出显示具有单元格no和来自行no的特定单元格(从比较数组中选取此信息)。案例2:预期输出将如下例所示

代码语言:javascript
复制
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.io/s/logic-1-6bkgs?file=/src/index.js

这里有没有我可以使用的库呢?谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-05-08 21:26:43

这不是微不足道的

代码语言:javascript
复制
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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61679893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档