以下是我的代码。我正在使用UTC时间戳来正确排序数据,但希望在排序后转换为本地时间(最后2个注释行)。但是,如果我在排序之前进行转换,则结果不正确。如果我尝试在函数外部进行转换,则b.Timestamp没有上下文。
var myArray = [];
data.Items.forEach(function(b) {
myArray.push(b.Timestamp + "text" + b.payload.value );
});
myArray.sort();
//var date = new Date(b.Timestamp + 'UTC');
//date.toString() // "Wed Jun 29 2011 09:52:48 GMT-0700 (PDT)"
答案 0 :(得分:0)
您必须在排序时保留原始数组,然后对其进行转换。您可以通过将自定义比较函数传递给.sort()
来完成此操作。这是一个链式实现:
// Get a string sort key for an item
function sortKey(item) {
return item.Timestamp + item.payload.value;
}
var myArray = data.Items
// Copy the array to avoid modifying the original
.slice()
// Sort using custom logic
.sort(function(a, b) {
return sortKey(a) > sortKey(b) ? 1 : -1;
})
// Use map to transform
.map(function(b) {
return Date(b.Timestamp + 'UTC');
});