Javascript将JSON转换为数组,并在其他地方组合使用

时间:2016-03-15 17:54:12

标签: javascript arrays json chart.js

我目前有点卡住尝试组合两个数组(其中一个日期,一次)。

我编写了一个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轴,因此如果可能的话,能够在数据上完成某种日期时间数学运算会很有用。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

尝试使用,分割日期和时间,并使用循环

连接每个日期和时间

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>')

答案 2 :(得分: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);