如何将数组放入另一个数组?

时间:2013-07-01 14:37:50

标签: javascript ajax arrays

我有一个用当前比特币价格更新的图表,但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);
          }

1 个答案:

答案 0 :(得分: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添加到数组中,最终将得到一个由{{{{ 1}}倍当前日期。

另一个有趣的观点是你的陈述:result.length 正如您在JsFiddle的第二个警告框中所看到的,这将创建一个数组,其中两个数组彼此相继。但是为什么世界上你会在每次迭代中都这样做?

此外,您永远不会与您的日期相关的事情。您不会将它们添加到数组或任何内容中:您只需创建它们然后不管它们。

这引出了一个问题:你究竟想做什么?

因此:

注意:可能是因为我弄错了,但是如果我是对的,你想要得到一个包含var tempDate = tempDate.concat(tempArray);信息和x-axis的数组。信息。因为你的问题以及你的代码如何清楚你想要实现这一点,我只能猜测。

因此,通过猜测你想要最终得到什么,我会按如下方式重写你的循环:

y-axis

您可以在此处查看其工作原理:http://jsfiddle.net/WT58s/1/

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

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

尝试查看您的数据是否也是如此。如果确实如此,你可以在这里阅读有关倒车的内容:

Reverse order of elements in 2-dimensional array