我有一个这样创建的动态数组:
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
的值进行排序的最佳方式,以便从索引 0
到 window.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/