我有一个JSON对象列表。在每个对象中,都有一个unix时间戳字段,这是我想要排序的字段。所以我写了一个排序函数
function sortUnixTimestamp(a, b){
var a = parseInt(a.timestamp);
var b = parseInt(b.timestamp);
return ((a > b) ? -1 : ((a < b) ? 1 : 0));
}
由于对象不是数组,我尝试了[].sort.call(object).sort(sortUnixTimestamp);
但是我不时得到 []。sort.call(...)。sort不是函数
我还试图通过(object).sort(sortUnixTimestamp);
来对它进行排序,有时我会得到(...)。排序不是函数
不时,因为它的工作时间是一半。为什么它在某些时候有效但并非总是如此?我该如何解决这个问题?
添加了: 每个对象都是这样的
{
"field1": "string",
"field2": "string",
"timestamp": 0
}
所以列表看起来像
[
{
"field1": "string",
"field2": "string",
"timestamp": 0
},
{
"field1": "string",
"field2": "string",
"timestamp": 0
},
...
]
答案 0 :(得分:0)
如果您的数据如下:
var data = [{
timestamp: 3
}, {
timestamp: 2
}, {
timestamp: 1
}];
var result = data.sort((item1, item2) => item1.timestamp - item2.timestamp);
console.log(result);
&#13;
您可以使用本机数组的排序功能。
答案 1 :(得分:0)
如果您的对象在数组中,您可以按时间戳值对它们进行排序:
var arrayObj = [
{timestamp: 12},
{timestamp: 10},
{timestamp: 2},
{timestamp: 23}
];
通过调用array.prototype.sort()方法按照下面的timestamp属性对对象数组进行排序:
arrayObj.sort(function (a,b) {
return a.timestamp - b.timestamp;
});
这应输出:
[ { timestamp: 2 },
{ timestamp: 10 },
{ timestamp: 12 },
{ timestamp: 23 } ]