2017-07-12 2 views
-1

Salut tout le monde,
J'ai cet objet:Javascript: diviser la valeur de la date d'objet par jour

{"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} 


Je suis en train de le diviser par jour et obtenir quelque chose comme ceci:
Créez d'abord un tableau pour le jour qui est de 24 heures:

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


Et de calculer combien de jours est dans l'objet ci-dessus et obtenir une valeur pour chaque heure et retourner quelque chose comme ci-dessous. Dans l'objet, j'ai 3 jours, donc je dois revenir 3 tableaux pour chaque jour:

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


Pour chaque heure qui ne correspond pas l'objet de données renvoient 0 et pour chaque heure qui existent retourner le valeur spécifiée sur l'objet. par exemple sur l'objet le temps commence à "2017-07-09 00:00:00":4 et il a la valeur de 4 et pour chaque heure entre cela et "2017-07-09 09:00:00":1 retour 0.

Toute aide appréciée. Merci beaucoup pour votre temps

Répondre

1

Vous devez d'abord boucler dans chaque touche de votre object. Après tant de solutions, l'une est de convertir vos clés en objet Date et de comparer l'heure de votre object dans une boucle for.

Et récupérez les données correctes en reconvertissant votre obj Date dans votre propriété obj.

Modifier

Accès valeur de votre propriété sans fonction à l'aide Object.keys et findIndex

Je l'ai peut-être mal compris vos besoins, mais vous avez un bon exemple de la façon de le faire; -)

Exemple de solution

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

Merci beaucoup pour votre temps. Comment puis-je revenir chaque jour sur un tableau séparé comme je le montre sur la question? –

+0

Formatez votre objet de données en un tableau de jours et adaptez ma solution ;-) 'data [{day1}, {day2}, ...]' => bouclez chaque jour et appliquez ma méthode. – Alexis

+0

Je n'ai aucune idée de comment faire ça. Malheureusement, ne pouvait pas trouver quelque chose sur internet non plus :( –