0

我有一张更新当前比特币价格的图表,但是 x 轴上的日期和时间不正确。它总是从 12 月 31 日 19:00 开始。在我的控制台中,我收到了正确的日期和时间,但我似乎无法让它正确显示在图表上。我很确定我需要将一个数组粘贴到另一个数组中。任何帮助表示赞赏,谢谢。

$.ajax({
        url: "/chart/ajax_get_chart", // the URL of the controller action method
        dataType: "json",
        type: "GET",
        success: function (result) {
          var result = JSON.parse(result);
          series = [];
          for (var i = 0; i < result.length; i++) {
            tempDate = Date.parse(result[i]['date']);
            tempArray = [parseFloat(result[i]['price'])];
            var date = new Date();
            tempDate = date.toString();
            series.push(tempArray);
            var tempDate = tempDate.concat(tempArray);
          }
4

1 回答 1

1

如果我理解正确,对于每个i

  • result[i]['date']给出位置的日期i
  • result[i]['price']给出位置的价格i

现在首先,让我们看一下您的循环:

for (var i = 0; i < result.length; i++) {

        //Here you grab the date from the result array
        tempDate = Date.parse(result[i]['date']);

        //Here you grab the price from the result array and parse it to a float
        tempArray = [parseFloat(result[i]['price'])];

        //Here you grab the current date (of today)
        var date = new Date();

        //Here you overwrite the 'grabbed date' with the current date (of today)
        tempDate = date.toString();

        //Here you add the price at position i to the 'result array' called series
        series.push(tempArray);

        //Here you join tempArray with the tempDate
        var tempDate = tempDate.concat(tempArray);
      }

那么究竟出了什么问题呢?

好吧,我为你准备了一个 JsFiddle:http: //jsfiddle.net/KzLFr/1/

仔细查看代码以及警报框中“显示”的内容。您会看到 tempDate 的值被当前日期覆盖。将此信息应用于您的循环:您将看到对于每次迭代,您都会result用当前日期覆盖从数组中获取的日期。

这意味着“实际”日期(从result[i]['date'])总是被覆盖,因此,如果您在每次迭代时将所有 tempDates 添加到一个数组中,您最终将得到一个由result.length当前日期时间组成的数组。

另一个有趣的点是您的陈述:var tempDate = tempDate.concat(tempArray); 正如您在 JsFiddle 的第二个警报框中看到的那样,这将创建一个数组,其中有两个数组。但是为什么你会在每次迭代中都这样做呢?

此外,你永远不会对你的约会做任何事情您不会将它们添加到数组或任何东西中:您只需创建它们,然后不理会它们。

这就引出了一个问题:你到底想做什么?

所以:

注意:可能是我弄错了,但如果我是对的,您希望得到一个包含x-axis信息和y-axis信息的数组。因为从你的问题和你的代码中不清楚你想如何完成这个,我只能猜测。

因此,通过猜测你想要结束什么,我会重写你的循环如下:

var dateData = [];
var priceData = [];

for( var i = 0; i < result.length; i++ ){
  dateData.push( result[i][0] );
  priceData.push( result[i][1] );
}

你可以在这里看到它是如何工作的:http: //jsfiddle.net/WT58s/1/

如果这不能解决您的问题,请解释您想要最终得到的结果(二维数组还是两个不同的数组?),以便我们更好地为您提供帮助。

此外,通常当您从 Internet 下载信息时,信息会向后存储;所以从当前日期开始,然后及时倒退。

尝试看看您的数据是否也是如此。如果确实如此,您可以在此处阅读有关反转的信息:

二维数组中元素的逆序

于 2013-07-01T16:12:03.570 回答