我正在尝试根据创建日期排序一系列s3存储桶(最新的)。我在排序的数组中重复多次相同的数组。我知道我在这里遗漏了一些东西,但我无法弄清楚是什么。我的代码是:
var bucketListArr = [];
for (var index in data.Buckets) {
var bucket = data.Buckets[index];
//if(bucketList[index] == null) bucketList[index] = [];
bucketListArr.push({
"bucketName": bucket.Name,
"creationDate": bucket.CreationDate
});
// bucketList[index][0] = bucket.Name;
// bucketList[index][1] = bucket.CreationDate;
}
var sortedBucketListArr = [];
//console.log("Bucket List :: ", bucketList, " length :: " , bucketList.length );
for(var i= 0;i < bucketListArr.length; i++){
for(var j = i + 1; j< bucketListArr.length; j++){
if(bucketListArr[i].creationDate >= bucketListArr[j].creationDate){
sortedBucketListArr.push({
"bucketName": bucketListArr[i].bucketName,
"creationDate": bucketListArr[i].creationDate
});
}
}
}
console.log("Sorted List :: ", sortedBucketListArr);
提前感谢您的帮助。
答案 0 :(得分:0)
我能够解决这个问题。问题是日期存储为字符串。所以它需要在数组可以在date属性上排序之前转换为Date。我把我的代码改为:
var bucketListArr = [];
for (var index in data.Buckets) {
var bucket = data.Buckets[index];
//if(bucketList[index] == null) bucketList[index] = [];
bucketListArr.push({
"bucketName": bucket.Name,
"creationDate": bucket.CreationDate
});
}
bucketListArr.sort(function (a, b) {
var dateA = a.creationDate, dateB = b.creationDate;
return dateB - dateA;//a.strParamToSortOn < b.strParamToSortOn;
});
console.log("Sorted List :: ", bucketListArr);