根据javascript中的时间戳进行排序

Sorting according to timestamp in javascript

本文关键字:排序 时间戳 javascript 根据      更新时间:2023-09-26

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

现在我有了一个数组,它根据时间戳存储消息。类似的东西

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

我的功能按排序(_B)

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];                  
   }
}

现在,我尝试使用firebug进行调试,发现我的排序功能不起作用。我使用时间戳作为密钥,但仍然没有运气。有没有办法我可以根据时间戳对它进行排序,然后显示它。我在SO上尝试了其他排序解决方案,但我想当有像时间戳这样的数据类型时,还有另一种排序方法

在对象文字中,您不必引用关键字:

input.push({ key: date_input, value: message });

然而,您的函数需要三个参数,这些参数不是用类似对象的表示法给出的,因此key的含义是未知的,并将导致ReferenceError:

input.sort(sort_by(key,true,parseInt));^ReferenceError:未定义键

使用字符串作为参数,它应该可以工作:

input.sort(sort_by("key",true,parseInt));

排序功能运行良好。当我用firebug调试它时,我在控制台上看到,即使日期输入是"上午6-29-07",它也只取6作为"键",因此当天的每个条目都被分配了相同的键。因此,排序无法提供所需的输出。因此,我避免了第二行中的new date()函数,直接将时间戳作为关键字,进行相应排序,然后将其转换为日期格式。愚蠢的错误,但花了一些时间。