当前位置: 首页 > 知识库问答 >
问题:

重构json,其中值不存在将值设置为0

田远
2023-03-14

我正试图从mysql查询中重构数据,我花了几天时间想要弄清楚如何做到这一点。mysql数据:

var data = [{rep:'Test1', day: 1 , binder: 500},
{rep:'Test1', day: 2 , binder: 500},{rep:'Test1', day: 3 , binder: 500},
{rep:'Test2', day: 2 , binder: 500},{rep:'Test2', day: 2 , binder: 500},
{rep:'Test1', day: 4 , binder: 500},{rep:'Test1', day: 5 , binder: 500},
{rep:'Test2', day: 4 , binder: 500},{rep:'Test1', day: 5 , binder: 500},
{rep:'Test1', day: 6 , binder: 500},{rep:'Test2', day: 7 , binder: 500}]

转换为datatables的可读对象

    var data = { 
"data": [
    [
      "Test1",
      "500", // total Binder from monday for Test1
      "500", // total Binder from Tuesday for Test1
      "500", // total Binder from wednesday for Test1
      "500", // total Binder from thursday for Test1
      "1000", // total Binder from friday for Test1
      "500" // total Binder from saturday for Test1
      "500", // total Binder from sunday for Test1
      "4000" // sum of all previous 
    ],[
      "Test2",
      "500", // total Binder from monday for Test2
      "500", // total Binder from Tuesday for Test2
      "500", // total Binder from wednesday for Test2
      "500", // total Binder from thursday for Test2
      "1000", // total Binder from friday for Test2
      "500" // total Binder from saturday for Test2
      "500", // total Binder from sunday for Test2
      "4000" // sum of all previous 
    ]
    
  ]
}

我的当前函数是

const transformObj = (repKey) => { 
const days = [ 
"Sunday", 
"Monday", 
"Tuesday", 
"Wednesday", 
"Thursday", 
"Friday", 
"Saturday" 
]; 

let obj = {}; 

const filteredDatasets = data.filter( 
(d) => d.rep.toLowerCase() === repKey.toLowerCase() 
); 

const total = filteredDatasets.reduce( 
(prevValue, currDataset) => prevValue + currDataset.binder, 
0 
); 

filteredDatasets.forEach((dataset) => { 
obj = { ...obj, rep: dataset.rep, [days[dataset.day - 1]]: dataset.binder }; 
}); 

obj.total = total; 

return obj; 
};

返回

{ rep: "jeff", Tuesday: 1500, total: 1500 }

我不知道如何做到这一点,我正在尝试自学js

共有1个答案

南门棋
2023-03-14

输入数据、期望的输出和您的代码之间似乎没有什么一致性。如果我仅仅依赖于输入数据和所需输出的形状,我将建议您首先创建一个由rep值键控的映射,并将所需数组结构与其相关联的过程。

然后通过对数据进行迭代来填充这些数组。

最后提取那些数组来构建最终的数据结构:

null

let data = [{rep:'Jeff', day: 1 , binder: 500},{rep:'Test1', day: 2 , binder: 500},{rep:'Test1', day: 3 , binder: 500},{rep:'Test2', day: 2 , binder: 500},{rep:'Test2', day: 2 , binder: 500},{rep:'Test1', day: 4 , binder: 500},{rep:'Test1', day: 5 , binder: 500},{rep:'Test2', day: 4 , binder: 500},{rep:'Test1', day: 5 , binder: 500},{rep:'Test1', day: 6 , binder: 500},{rep:'Test2', day: 7 , binder: 500}];

let reps = new Map(data.map(({rep}) => [rep, [rep, 0, 0, 0, 0, 0, 0, 0, 0]]));
for (let {rep, day, binder} of data) {
    let arr = reps.get(rep);
    arr[8] += arr[day] = binder;
}
let result = { data: [...reps.values()] };

console.log(result);
 类似资料:
  • 问题内容: 我希望将值设置为如果我提交的表单中的文本框未放入任何内容。我怎样才能做到这一点?我尝试插入,但这只是将单词添加到字段中。 我不确定应该为此提供什么代码,我只是在编写UPDATE查询。 问题答案: 不要在更新语句中加引号。这应该工作:

  • 问题内容: 我有一个bash.sh脚本: 其中config.json: 当我运行它时,我得到: ERR未知命令’}’ 如何从json文件正确设置json值? 问题答案: 如果你正在尝试设置 字符串 的值,关键看你的JSON文件的内容(或其他任何与此有关的,包括二进制),最简单的方法是使用选项来 阅读的最后一个参数 逐字的命令, 从。例如: 对于您的示例,它将存储: 要存储JSON数据的紧凑表示形式

  • 这是我的代码。我需要在x和y轴刻度中将初始值设置为“0”。我尝试了最新的版本刻度选项。

  • 我使用的是log4j1。2.17和apache-extras-log4j--1.2。17.jar用于日志记录。 我的目的是根据大小对文件进行滚动和归档。下面是log4j。xml ${LOG_FILESIZE_LIMIT}是100MB。 但它没有将MaxFileSize设置为100MB,并给出以下消息。 log4j:警告无法将属性[maxFileSize]设置为值“100MB” 它采用默认的maxf

  • 问题内容: 如何在SQL表中将所有0值都设置为NULL? 提前致谢。 问题答案:

  • 我有两个30m x 30m光栅文件,我想从中采样点。在采样之前,我想从图像中去除云层。我转向R和Hijman的光栅包来完成这项任务。 我使用绘图Poly(sp=TRUE)命令,绘制了18个不同的多边形。该函数似乎不允许18个多边形作为一个sp对象,所以我将它们全部分开绘制。然后,我给多边形一个与光栅匹配的投影4string,并将它们设置为列表。我通过lApplication函数运行列表以将它们转换