2017-07-12 6 views
-1

こんにちはみんな、
私はこのオブジェクトを持っている:Javascriptを:除算のオブジェクトの日付値日あたり

{"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時間の日の配列を作成します。

[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23] 


そして、上記の目的であるどのように多くの日を計算し、各時間の値を取得し、以下のようなものを返すより。オブジェクトに私は3日間を持っているので、私は、各日3つの配列を返す必要が:戻り存在するデータは0を返すオブジェクトに、各時間ない各時間について

[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,..] 


オブジェクトの指定された値。時間が"2017-07-09 00:00:00":4から開始し、4の値を有し、それと"2017-07-09 09:00:00":1 戻り0

任意の助けを理解間の各時間オブジェクトに例えば 。おかげでたくさんのお時間を

答えて

1

はあなたのobjectの各キーにループの最初のを持っています。

その多くの解決策の後、1つはあなたの鍵をDateオブジェクトに変換し、objectの時間をforループ内で比較します。

そして、あなたのOBJプロパティにあなたの日付OBJを再変換することにより、右データを取得します。

編集

Object.keysfindIndex

を使用して機能せずにアクセスしますプロパティ値私は多分あなたの条件を誤解しましたが、あなたが行う方法の良い例 をしました。 - )

溶液の例

var data ={"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} 
 

 
var dataKeys = Object.keys(data); 
 

 
var dataKeysParsed = dataKeys.map(function(d){ 
 
    return new Date(d); 
 
}); 
 

 
var res =[]; 
 
for (var i=0;i<=23;i++){ 
 
    var id = dataKeysParsed.findIndex(function(k){ 
 
    return k.getHours() == i 
 
    }); 
 
    
 
    res.push(id > -1 ? data[dataKeys[id]] : 0); 
 
} 
 
console.log(res);

+0

おかげで、あなたの時間のためにたくさん。私が質問に示すように、私は別々の配列で毎日を返すことができますか? –

+0

あなたのデータオブジェクトを日の配列にフォーマットし、私の解決策を;-) 'data [{day1}、{day2}、...]' =>毎日繰り返すことで、私のメソッドを適用します。 – Alexis

+0

私はそれを行う方法は考えています。残念ながら、インターネットで何かを見つけることができませんでした:( –

関連する問題