javascript - 如何对动态数组进行排序

标签 javascript jquery arrays date sorting

我有一个这样创建的动态数组:

window.IDarray = [];

我有一个这样创建的字典:

window.itemdictionary = {};

window.IDarray的长度与window.itemdictionary相同。 window.IDarray 的值是唯一的。 window.IDarray 的值也是 window.itemdictionary 的键。

window.itemdictionary 中任何键的“值”的数据类型也是一个字典,其中包含一个名为“modified” 的键,值是一个字符串日期格式示例 “Mon May 28 11:20:46 EDT 2012”

什么是对 window.IDarray 的值进行排序的最佳方式,以便从索引 0window.IDarray 的末尾>,它在 window.itemdictionary 中对应的日期离当前日期越来越远? (即索引 0 将给出最接近当前日期的日期,而索引 n 将给出最远的日期)。

最佳答案

您将需要使用自定义排序功能,请参阅 Array.sort from MDN .

首先,为了按日期排序,您的 "modified": "Mon May 28 11:20:46 EDT 2012" 需要转换为可用于比较的格式, 使用 Date.parse()

var tempItemDictionary = [];   // use temp array to hold the timestamp
// convert dates first
for (var i = 0, item = null; i < IDarray.length; i++) {
    item = itemDictionary[IDarray[i]];
    tempItemDictionary[IDarray[i]] = {
        timestamp: Date.parse(item.modified)    // convert date to timestamp
    };
}

然后我们使用自定义排序函数通过 .sort() 运行 IDarray:

IDarray.sort(function(a, b) {
    return tempItemDictionary[b].timestamp - tempItemDictionary[a].timestamp;
});

参见工作示例:http://jsfiddle.net/788bs/1/

关于javascript - 如何对动态数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16822085/

相关文章:

javascript - Python Selenium 屏蔽字段

javascript - 显示为数组的 JSON 数据

javascript - 在 ajax 成功时刷新 DIV

ios - 希望使用过滤器方法使用 Swift 从数组中删除基于两个属性的重复模型对象

c++ - 使用智能指针管理函数内分配的内存

javascript - 谷歌地球根据纬度和经度值计算海拔高度

javascript - < bean :message key ='keyvalue' > does not work in js file while work perfectly in jsp file

C - 如何 malloc 包含字符串和数组的结构?

javascript - jQuery 销毁/禁用/触发一次路点

javascript - 为什么 jQuery show() 不工作?