2016-03-15 19 views
0

我目前有點卡住試圖結合兩個數組(日期之一,次)。Javascript獲取JSON到數組,結合並在其他地方使用

我已經寫了一個PHP腳本從一個SQL表中傳遞出JSON,我已經包含了這些數據,但是我正在努力將這兩個數組轉換成JavaScript中的單個日期時間數組。

的JSON是走出爲:

{ 
    "dates": [ 
    "2016-03-13", 
    "2016-03-13", 
    "2016-03-14", 
    "2016-03-14" 
    ], 
    "times": [ 
    "16:41:13", 
    "17:36:57", 
    "08:53:02", 
    "21:53:11" 
    ] 
} 

到目前爲止我用它來收集數據,但我真的不知道該去哪裏從那裏(或者,如果有什麼我越來越甚至是一個數組):

$(document).ready(function() { 

    var API_URL = "php_script.php"; 

    $.getJSON(API_URL, function(data) { 
     var dates = data.dates; 
     var times = data.times; 
     console.log(dates + " " + times); 
    }); 

}); 

其中的輸出是:

2016-03-13,2016-03-13,2016-03-14,2016-03-14,16:41:13,17:36:57,08:53:02,21:53:11 

我寧願:

[2016-03-13 16:41:13,2016-03-13 17:36:57,2016-03-14 08:53:02,2016-03-14 21:53:11] 

作爲一個數組傳遞出來,然後我可以使用chart.js

日期和時間將用於X軸,它們之間的時間用於Y軸,所以如果可能的話,能夠完成數據的某種日期時間數學會很有用。

回答

0

如果使用像lodash這樣的庫,這種事情很簡單。在這種情況下,你會想_.zip

var dates = data.dates; 
var times = data.times; 

var zipped = _.zip(dates, times); 
var text = _.reduce(zipped, function(aggregate, item) { return ',' + item[0] + ' ' + item[1]; }); 
console.log(text); 
0

嘗試劈開,和CONCAT他們每個人的日期和時間,通過使用循環

var data = { 
 
    "dates": [ 
 
    "2016-03-13", 
 
    "2016-03-13", 
 
    "2016-03-14", 
 
    "2016-03-14" 
 
    ], 
 
    "times": [ 
 
    "16:41:13", 
 
    "17:36:57", 
 
    "08:53:02", 
 
    "21:53:11" 
 
    ] 
 
} 
 

 
var datetimes = []; 
 

 
for (var i = 0; i < data.dates.length; i++) { 
 
    datetimes.push(data.dates[i] + ' ' + data.times[i]); 
 
} 
 

 
document.write('<pre>' + JSON.stringify(datetimes, 0, 4) + '</pre>')

+0

這假設我所得到的日期和時間是字符串? 我可以將這個作爲某種數組在其他地方使用嗎? – LADransfield

+0

對不起,只是看到你的更新..如果你有輸出作爲數組,他們你不必split.just uset循環 –

+0

我不知道如何檢查它是否是一個數組,如果我誠實... – LADransfield

0

這裏有一個辦法手動將它們混合一起......要點是手動將字符串拼接在一起,然後使用Date.parse()來製作日期對象。

var dates = [ 
"2016-03-13", 
"2016-03-13", 
"2016-03-14", 
"2016-03-14", 
]; 

var times = [ 
"16:41:13", 
"17:36:57", 
"08:53:02", 
"21:53:11", 
]; 

var both = []; 
for (var i = 0; i < dates.length; i++) { 
    both.push(new Date(Date.parse(dates[i] + " " + times[i]))); 
} 

console.log("%j",both); 
相關問題