Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中根据时间戳排序_Javascript_Sorting - Fatal编程技术网

在javascript中根据时间戳排序

在javascript中根据时间戳排序,javascript,sorting,Javascript,Sorting,我的javascript中有两个变量。 消息函数:var消息 时间戳函数:var date(属于时间戳类型) 现在我有了一个数组,它根据时间戳存储消息。差不多 var input = []; //dynamic array to store both message and date var date = new Date(update.data.history[i].timestamp * 1000); //Getting from Json object var da

我的javascript中有两个变量。 消息函数:
var消息
时间戳函数:
var date
(属于时间戳类型)

现在我有了一个数组,它根据时间戳存储消息。差不多

    var input = []; //dynamic array to store both message and date
    var date = new Date(update.data.history[i].timestamp * 1000); //Getting from Json object
    var date_input = date.toLocaleTimeString();
    var message = update.data.history[i].message;
        for (i to length)
    {
        input.push({ key: date_input, value: message });     //Key refers to date, and value to message
    }
   input.sort(sort_by(key,true,parseInt));
我的函数排序

var sort_by = function(field, reverse, primer){

   var key = function (x) {return primer ? primer(x[field]) : x[field]};

   return function (a,b) {
       var A = key(a), B = key(b);
       return (A < B ? -1 : (A > B ? 1 : 0)) * [1, -1][+!!reverse];                  
   }
}
var sort_by=函数(字段、反向、初级){
var key=function(x){returnprimer?primer(x[field]):x[field]};
返回函数(a,b){
变量A=键(A),B=键(B);
返回(AB-1:0))*[1,-1][+!!反向];
}
}

现在,我试着用firebug进行调试,发现我的排序功能不起作用。我使用时间戳作为键,但仍然没有运气。我可以根据时间戳对它进行排序,然后显示它我在SO上尝试了其他排序解决方案,但我想当对象文本中存在类似timestamp的数据类型时,还有另一种排序方法?

,您不必引用键:

input.push({ key: date_input, value: message });
但是,您的函数接受三个参数,它们不是以类似对象的表示法给出的,因此
的含义未知,将导致引用错误:

input.sort(sort_by(key,true,parseInt)); ^ ReferenceError: key is not defined
排序功能工作正常。当我用firebug调试它时,我在控制台上看到,尽管日期输入是“6-29-07 am”,但它只将6作为“键”,因此在特定的一天,每个条目都被分配了相同的键。因此,排序无法给出所需的输出。因此,我避免在第二行使用新的date()函数,直接将时间戳作为键,进行相应排序,然后将其转换为日期格式。愚蠢的错误,但需要一些时间。

您应该在此处发布动态填充的
输入
数组。我添加了日期和消息更新。时间戳可以是一个整数,很容易对整数排序,但显然它没有排序。在哪一行,步骤调试失败?1) 尝试在排序函数中设置断点。2) 然后看看每一个比较。3) 通常情况下,类型不是您期望的类型,例如,您比较的是字符串值而不是整数。比较时间戳的字符串版本会得到意外的比较结果,例如比较字母的ASCII值。如果是这种情况,您应该能够在分步调试时检测到这一点。显然它不起作用。不知道为什么。甚至尝试过传统的方法input=input.sort(函数(a,b){return parseFloat(a.key)-parseFloat(b.key)});还是不走运。就好像它没有识别出键盘中的任何东西,但却发现了错误。。显然,当我解析它时,它只识别第一个元素。比如下午6:09:22,只需要6分钟。因此,不要排序:(@UnderDog:Try
Number
as
primer
而不是
parseInt
。另外,在你的问题中包含一个完整的问题示例(提供实际数据,没有未引用的变量等)。这是一个我忽略的小问题;)在将时间戳函数转换为日期函数之前,我尝试访问它,并根据它进行排序。它起作用了:)@UnderDog-对于这样的问题,你可以自己添加一个答案,描述你是如何发现问题的,它是什么,以及你对此做了什么,然后你可以接受自己的答案。我谦恭地建议你这样做。否则,其他有类似问题的人会搜索谷歌,找到这个,兴奋地想“这就是解决方案!”。他们读了所有的评论,他们看到那个家伙说“尤里卡!我已经解决了!”然后。。。。没有什么。没有解决办法。没有暗示。怎么搞的?我讨厌这样D
input.sort(sort_by("key",true,parseInt));