Javascript:每天除以对象日期值
大家好,Javascript:每天除以对象日期值,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,大家好, 我有一个目标: {"2017-07-09 00:00:00":4,"2017-07-09 09:00:00":1,"2017-07-09 10:00:00":4,"2017-07-09 11:00:00":3,"2017-07-09 12:00:00":16,"2017-07-09 13:00:00":4,"2017-07-09 14:00:00":6,"2017-07-09 15:00:00":5,"2017-07-09 16:00:00":7,"2017-07-09 17:00:0
我有一个目标:
{"2017-07-09 00:00:00":4,"2017-07-09 09:00:00":1,"2017-07-09 10:00:00":4,"2017-07-09 11:00:00":3,"2017-07-09 12:00:00":16,"2017-07-09 13:00:00":4,"2017-07-09 14:00:00":6,"2017-07-09 15:00:00":5,"2017-07-09 16:00:00":7,"2017-07-09 17:00:00":21,"2017-07-09 18:00:00":25,"2017-07-09 19:00:00":1,"2017-07-10 09:00:00":11,"2017-07-10 10:00:00":4,"2017-07-10 11:00:00":21,"2017-07-10 12:00:00":22,"2017-07-10 13:00:00":23,"2017-07-10 14:00:00":42,"2017-07-10 15:00:00":14,"2017-07-10 16:00:00":36,"2017-07-10 17:00:00":21,"2017-07-10 18:00:00":5,"2017-07-11 09:00:00":16,"2017-07-11 10:00:00":7,"2017-07-11 11:00:00":26,"2017-07-11 12:00:00":34,"2017-07-11 13:00:00":39,"2017-07-11 14:00:00":39,"2017-07-11 15:00:00":30,"2017-07-11 16:00:00":33,"2017-07-11 17:00:00":22,"2017-07-11 18:00:00":1}
我试着每天把它分开,得到如下结果:
首先为24小时内的一天创建一个数组:
然后计算上面的对象中有多少天,得到每个小时的值,并返回如下内容。在对象中,我有3天,因此我需要为每一天返回3个数组:
对于不在对象数据中的每个小时,返回0;对于存在的每个小时,返回对象上的指定值。 例如,在对象上,时间从
“2017-07-09 00:00:00”:4开始,其值为4,并且在该值与“2017-07-09 09:00:00”之间的每小时为1
返回0。
感谢您的帮助。非常感谢您抽出时间首先,您必须循环到对象
的每个键中
在众多解决方案之后,一种方法是将密钥转换为Date
对象,并在for
循环中比较对象的小时数
并通过将日期obj重新转换为obj属性来检索正确的数据
编辑
使用Object.keys
和findIndex
我可能误解了你的要求,但你有一个很好的例子
关于如何做;-)
解决方案示例
var数据={“2017-07-09 00:00:00”:4,“2017-07-09 09 09:00:00”:1,“2017-07-09 10:00:00”:4,“2017-07-09 11:00:00”:3,“2017-07-09 12:00:00”:16,“2017-07-09 13:00:00”:4,“2017-07-09 14:00:00”:6,“2017-07-09 15:00:00”:5,“2017-07-07-09 16:00:00”:7,“2017-07-07-09 17:00:00:00:00”:21,“2017-07-07-07-07-09 14:00:00:00:00”,2017-07-07-09:00,"2017-07-10 10:00:00":4,"2017-07-10 11:00:00":21,"2017-07-10 12:00:00":22,"2017-07-10 13:00:00":23,"2017-07-10 14:00:00":42,"2017-07-10 15:00:00":14,"2017-07-10 16:00:00":36,"2017-07-10 17:00:00":21,"2017-07-10 18:00:00":5,"2017-07-11 09:00:00":16,"2017-07-11 10:00:00":7,"2017-07-11 11:00:00":26,"2017-07-11 12:00:00":34,"2017-07-11 13:00:00":39,"2017-07-11 14:00:00":39,"2017-07-11 15:00:00":30,"2017-07-11 16:00:00":33,"2017-07-11 17:00:00":22,"2017-07-11 18:00:00":1}
var dataKeys=Object.keys(数据);
var dataKeysParsed=dataKeys.map(函数(d){
返回新日期(d);
});
var-res=[];
对于(变量i=0;i-1?数据[dataKeys[id]]:0);
}
console.log(res);
非常感谢您的时间。如何像我在问题上所展示的那样以单独的数组返回每天?将数据对象格式化为一个天数数组并调整我的解决方案;-)数据[{day1},{day2},…]
=>每天循环并应用我的方法。我不知道如何做到这一点。不幸的是,在互联网上也找不到一些东西:(
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]
[4,0,0,0,0,0,0,0,0,1,10,3,16,...],
[0,0,0,0,0,0,0,0,0,11,4,21,22,23,42,...]
[0,0,0,0,0,0,0,0,0,16,7,26,34,39,39,30,..]