日付を組み合わせてカウントしたい。すべての日付はUTCのタイムゾーンにあります。まず、toLocaleDateString()を使用してすべてのUTC時刻を現地時間に変換し、その日付をJSONオブジェクトのキーとして作成しますが、結果を期待通りに取得しません。jsonで同じ日付または複製を結合してカウントする
マイJSONフォーマット:
[{"UploadTimeStamp":"2017-02-18T09:01:43.060Z"},
{"UploadTimeStamp":"2017-02-19T04:09:43.347Z"},
{"UploadTimeStamp":"2017-02-21T14:38:40.157Z"},
{"UploadTimeStamp":"2017-02-22T11:30:58.546Z"},
{"UploadTimeStamp":"2017-02-22T11:31:35.514Z"},
{"DoneTimeStamp":"2017-02-19T03:54:34.791Z"},
{"DoneTimeStamp":"2017-02-19T17:48:40.041Z"},
{"DoneTimeStamp":"2017-02-21T14:55:33.335Z"},
{"DoneTimeStamp":"2017-02-17T15:01:32.426Z"}]
結果:
{"18/02/2017":{"Upload":1},
"19/02/2017":{"Upload":1},
"21/02/2017":{"Upload":1},
"22/02/2017":{"Upload":"[object Object]1","Done":"[object Object]1"},
"17/02/2017":{"Done":1}}
マイコード:
for (var i = 0; i < result.length; i++) {
if (result[i].UploadTimeStamp) {
var value = new Date(result[i].UploadTimeStamp).toLocaleDateString();
//increment counter for this value (starting at 1)
var count = (temp[value] || 0) + 1;
if (temp[value] === undefined) {
temp[value] = {}
temp[value].Upload = count;
}
else {
temp[value].Upload = count;
}
}
else {
var value = new Date(result[i].DoneTimeStamp).toLocaleDateString();
//increment counter for this value (starting at 1)
var count = (temp[value] || 0) + 1;
if (temp[value] === undefined) {
temp[value] = {}
temp[value].Done = count;
}
else {
temp[value].Done = count;
}
}
}
console.log(JSON.stringify(temp))
私の期待される結果
{"18/02/2017":{"Upload":1,"Done":0},
"19/02/2017":{"Upload":1,"Done":2},
"21/02/2017":{"Upload":1,"Done":1},
"22/02/2017":{"Upload":1,"Done":1},
"17/02/2017":{"Done":1,"Upload":0}}
は事前
は、私が行って追加したい、そんなにありがとう= 0特定の日付と万力詩22/02/2017" にdoneTimeStampを発見していない場合は:{ 『アップロード』:2、 『完了』 :0}、 "17/02/2017":{"完了":1、 "アップロード":0} – Beginner
@Beginner Answer updated – Weedoze
tmp [値] .done = tmp [値] .done || 0; in "IF BLOCK"とtmp [value] .upload = tmp [value] .upload || 0;それは正しいですか?私の問題を解決しました。 – Beginner