我有一个用当前比特币价格更新的图表,但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);
}
答案 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/
如果这不能解决您的问题,请解释您想要最终得到的结果(二维数组或两个不同的数组?),以便我们更好地为您提供帮助。
此外,通常当您从互联网上下载信息时,信息会向后存储;所以从当前日期开始,然后及时倒退。
尝试查看您的数据是否也是如此。如果确实如此,你可以在这里阅读有关倒车的内容: