用js完成一个功能,求助

风行者_斌 2015-04-13 08:02:19
我需要用js完成一个功能:
我要统计每个人每天的工作量。我现在有这么几个参数,要统计人数,numbers,当月有DaysofMonth天。从数据库查询出来的数据是不全的,比如:张三当月只有2,4,6号有工作量,李四1,25,30号有工作量,那么查出来的数据是这样的:
姓名,号数,工作量(h)
【张三, 2, 8】
【张三, 4, 8】
【张三, 6, 8】
【李四, 1, 6】
【李四, 25, 7】
【李四, 30, 9】
但我现在要补全这个表,当天没有工作量就补0,效果要是这样的
【张三, 1, 0】
【张三, 2, 8】
【张三, 3, 0】
【张三, 4, 8】
【张三, 5, 0】
【张三, 6, 8】
…………(省略)
【张三, 28, 0】
【张三, 29, 0】
【张三, 30, 0】

【李四, 1, 6】
【李四, 2, 0】
【李四, 3, 0】
【李四, 4, 0】
【李四, 5, 0】
.……

【李四, 25, 7】
【李四, 26, 0】
【李四, 27, 0】
【李四, 28, 0】
【李四, 29, 0】
【李四, 30, 9】

数组总的大小是 人数(numbers) * 当月天数(DaysofMonth)个
用js代码实现
在线等,谢谢!

...全文
181 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
好转啊
var backDatas=[['张三',5,7],['张三',9,8]];
var datas={};
for(var i=0;i<backDatas.length;i++){
      var tmpArr = backDatas[i];
      var tmpData ={Name:'',Day:0,Hour:0};tmpData.Name=tmpArr[0];tmpData.Day=tmpArr[1];tmpData.Hour=tmpArr[2];
      datas[tmpArr[0]+'_'+tmpArr[1]] = tmpData;
}
风行者_斌 2015-04-14
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
你可以把【张三, 5, 7】这样的格式转化为datas啊,你列个具体的json格式呢
这个转为json格式的比较好吗,我直接使用查询出来的结果是不是不太好?本人菜鸟,对json不了解,还请多指教
风行者_斌 2015-04-14
  • 打赏
  • 举报
回复
[quote=引用 6 楼 starfd 的回复:]非常感谢你,能不能再帮我一下:就是把所有人第一天、第二天……第30天的工作量分别放在一个数组里,比如有五个人,五个人第一天的工作量【3,4,5,6,3】这样。对前端不懂,还请多照顾,谢谢。
  • 打赏
  • 举报
回复
你可以把【张三, 5, 7】这样的格式转化为datas啊,你列个具体的json格式呢
风行者_斌 2015-04-13
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
就是循环
var datas={'张三_2':{Name:'张三',Day:2,Hour:8},"张三_4":{Name:'张三',Day:4,Hour:8},"张三_12":{Name:'张三',Day:12,Hour:8},
"李四_3":{Name:'李四',Day:3,Hour:8},"李四_4":{Name:'李四',Day:4,Hour:8},"李四_17":{Name:'张三',Day:17,Hour:8}};
var users = ['张三','李四','王五'];
var arr = [];
var totalDays=30;
for(var i=0;i<users.length;i++)
{
     for(var j=0;j<totalDays;j++)
     {
          var data =datas[users[i]+"_"+j];
          if(data!=undefined){
                arr.push(data);
          }
          else{
                 data={Name:'',Day:0,Hour:0};data.Name=users[i];data.Day=j;
                 arr.push(data);
          }
     }
}
你好,非常感谢你的解答。能不能把datas的数据格式换一下,因为我查出来的结果是【张三, 5, 7】这样的,然后再修改一下代码
  • 打赏
  • 举报
回复
就是循环
var datas={'张三_2':{Name:'张三',Day:2,Hour:8},"张三_4":{Name:'张三',Day:4,Hour:8},"张三_12":{Name:'张三',Day:12,Hour:8},
"李四_3":{Name:'李四',Day:3,Hour:8},"李四_4":{Name:'李四',Day:4,Hour:8},"李四_17":{Name:'张三',Day:17,Hour:8}};
var users = ['张三','李四','王五'];
var arr = [];
var totalDays=30;
for(var i=0;i<users.length;i++)
{
     for(var j=0;j<totalDays;j++)
     {
          var data =datas[users[i]+"_"+j];
          if(data!=undefined){
                arr.push(data);
          }
          else{
                 data={Name:'',Day:0,Hour:0};data.Name=users[i];data.Day=j;
                 arr.push(data);
          }
     }
}
风行者_斌 2015-04-13
  • 打赏
  • 举报
回复
我的想法是新建一个全的数组,把值都赋为0,然后和查出来的数据对比,当天有值的就更新,但是不太会写

87,984

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧