我在javascript中有一个对象
Object {HIDDEN ID: "06/03/2014", HIDDEN ID: "21/01/2014"}
我希望能够创建一个新对象,按照最近的日期排序。
像这样:
SortedObject {"HIDDEN ID" : "21/01/2014", "HIDDEN ID" : "06/03/2014"}
我知道如何使用数组实现这一点,但我不知道如何迭代对象以按日期排序。
非常感谢任何帮助
编辑:
现在我有了这段代码。
for(var x=0; x<folderList.length; x++){
retrieveAllFilesInFolder(folderList[x], function(){
var arr = [];
for(var i in fileListObj) {
var d = fileListObj[i].split("/");
arr.push({"id": i, "date":(new Date(d[2],d[1]-1,d[0]))});
}
arr.sort(function(a,b) { return a.date < b.date;});
console.log(arr);
});
}
但是我的输出没有按日期排序。
Object 1 id: "hiddenID1", date: Mon Nov 18 2013 00:00:00 GMT+0000 (GMT Standard Time)
Object 2 id: "hiddenId2", date: Thu Mar 06 2014 00:00:00 GMT+0000 (GMT Standard Time)
Object 3 id: "hiddenId3", date: Thu Sep 05 2013 00:00:00 GMT+0100 (GMT Daylight Time)
答案 0 :(得分:4)
您无法对对象进行排序,因为它包含键值对&amp;不是序列化的项目。
你必须先构建一个数组&amp;然后对它进行排序。
var obj = {"a" : "21/01/2014", "b" : "06/03/2014"};
var arr = [];
for(var i in obj) {
var d = obj[i].split("/");
arr.push({"id": i, "date":(new Date(d[2],d[1]-1,d[0]))});
}
arr.sort(function(a,b) { return a.date.valueOf() > b.date.valueOf();});
结果将是按日期排序的数组arr
。
答案 1 :(得分:1)
你不能“排序”JSON对象;您唯一能做的就是将值放入数组并对数组进行排序。我假设两个“隐藏id”是两个不同的字段,因为你的例子不是有效的JSON。