2017-05-09 4 views
1

JSONデータを取得しています。そして私は時間形式のために瞬間jsを使用しています。だから私はデータを取得した後にいくつかの値を追加したい。私のデータは(0.0,1.00,2.00,3.00,4.00〜23.00)のようなものです。今私は2.00,3.00,4.00のようにいくつかの戻り値を取得しています。 JSONデータ:応答で取得した後のJSONデータの変更

[{ 
    "_id": { 
     "hr": 2, 
     "minut": 2 
    }, 
    "totoal": 42 
}, 
{ 
    "_id": { 
     "hr": 4, 
     "minut": 3 
    }, 
    "total": 144 
}, 
{ 
    "_id": { 
     "hr": 8, 
     "minut": 5 
    }, 
    "total": 188 
}, 
{ 
    "_id": { 
     "hr": 9, 
     "minut": 10 
    }, 
    "total": 128 
} 
] 

var time =_.map(resp.data, function(res) { 
    return (res._id.hr + ':' + res._id.minut + 0) 
}); 

コンソールで「時間」を印刷すると、次のように表示されます。

2:20,4:30,8:50,9:10

私はグラフのため、このタイミングを設定します。私はより理解のためのグラフのいくつかのスニペットを示すことができます。 enter image description here

しかし、私は

00:00 1時00分、2時00分、3時、4時、午前5時、6時、7と同様に、これらの値を変更します: 00、午前8時50分、午前9時00分10:00、 11時50分、12.00、夜01時10分14:00 15:00、14:30,15:30

欲望結果: enter image description here

今私はこれらを取得しています"2:20,4:30 、8:50,9:10 ""配列形式の変数 "time"の値。だから私はグラフで1時間ごとに表示したい。しかし、私は一部の値だけをすべて取得しているわけではありません(データがない場合は、タイムスロットが返されません)。 SOデータは、jsonデータに示されている合計です。しかし、私は誰もデータを持っていないすべての時間を表示したい(合計)。

+0

あなたはおそらく0からあなたの最大時間に至るまでループする必要があるとあなたのグラフコードでダニ軸を作成します。私はそれがあなたの応答データと関係があるのか​​疑問です。どのグラフ化ライブラリを使用していますか? –

答えて

1

var x = [{ 
 
    "_id": { 
 
     "hr": 2, 
 
     "minut": 2 
 
    }, 
 
    "totoal": 42 
 
    }, 
 
    { 
 
    "_id": { 
 
     "hr": 4, 
 
     "minut": 3 
 
    }, 
 
    "total": 144 
 
    }, 
 
    { 
 
    "_id": { 
 
     "hr": 8, 
 
     "minut": 5 
 
    }, 
 
    "total": 188 
 
    }, 
 
    { 
 
    "_id": { 
 
     "hr": 9, 
 
     "minut": 10 
 
    }, 
 
    "total": 128 
 
    } 
 
] 
 

 
var time = []; 
 

 
// you can replace x with resp.data from your code 
 
// this line 
 
// _.sortBy(x, function(res, idx) { 
 
// will be 
 
//_.sortBy(resp.data, function(res, idx) { 
 

 

 
_.sortBy(x, function(res, idx) { 
 
    if (typeof x[idx - 1] !== 'undefined') { 
 
    if (((x[idx - 1])._id.hr + 1) !== res._id.hr) { 
 
     for (var i = x[idx - 1]._id.hr + 1; i < res._id.hr; i++) { 
 
     time.push(i + ':00'); 
 
     } 
 
    } 
 
    } 
 
    time.push(('0' + res._id.hr).slice(-2) + ':' + ('0' + res._id.minut).slice(-2)); 
 
}); 
 

 
for (i = 1; i <= 12; i++) { 
 
    var x = time[i - 1]; 
 
    if (x !== undefined) { 
 
    var hr = parseInt(x, 10); 
 
    if (hr > i) { 
 
     time.splice(i - 1, 0, ('0' + i).slice(-2) + ':00'); 
 
    } 
 
    } else { 
 
    time.splice(i - 1, 0, ('0' + i).slice(-2) + ':00'); 
 
    } 
 
} 
 
console.log(time)
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

+0

0:00から開始して12:00に終了するロジックを追加する場合、ロジックを少し変更できます – MehulJoshi

+0

これを試しました。時間の値だけデモを添付できますか? –

+0

idx値を渡す方法。それは未定義を示しているからです。 –

関連する問題