Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何对数组等对象列表进行排序_Javascript_Arrays_Json_Sorting_Timestamp - Fatal编程技术网

Javascript 如何对数组等对象列表进行排序

Javascript 如何对数组等对象列表进行排序,javascript,arrays,json,sorting,timestamp,Javascript,Arrays,Json,Sorting,Timestamp,我有一个JSON对象列表。在每个对象中,都有一个unix时间戳字段,这就是我想要排序的对象。所以我写了一个排序函数 function sortUnixTimestamp(a, b){ var a = parseInt(a.timestamp); var b = parseInt(b.timestamp); return ((a > b) ? -1 : ((a < b) ? 1 : 0)); } 所以这个列表看起来像 [ { "field1": "st

我有一个JSON对象列表。在每个对象中,都有一个unix时间戳字段,这就是我想要排序的对象。所以我写了一个排序函数

function sortUnixTimestamp(a, b){
  var a = parseInt(a.timestamp);
  var b = parseInt(b.timestamp);
  return ((a > b) ? -1 : ((a < b) ? 1 : 0));
}
所以这个列表看起来像

[
    {
      "field1": "string",
      "field2": "string",
      "timestamp": 0
    },
    {
      "field1": "string",
      "field2": "string",
      "timestamp": 0
    },
    ...
]

如果您的数据如下所示:

var数据=[{
时间戳:3
}, {
时间戳:2
}, {
时间戳:1
}];
var result=data.sort((item1,item2)=>item1.timestamp-item2.timestamp);

控制台日志(结果)如果您的数据如下所示:

var数据=[{
时间戳:3
}, {
时间戳:2
}, {
时间戳:1
}];
var result=data.sort((item1,item2)=>item1.timestamp-item2.timestamp);

控制台日志(结果)如果对象位于数组中,则可以按其时间戳值对其进行排序:

var arrayObj = [
  {timestamp: 12},
  {timestamp: 10},
  {timestamp: 2},
  {timestamp: 23}
];
通过调用array.prototype.sort()方法按对象的时间戳属性对对象数组进行排序,如下所示:

arrayObj.sort(function (a,b) {
  return a.timestamp - b.timestamp;
});
这应该输出:

[ { timestamp: 2 },
{ timestamp: 10 },
{ timestamp: 12 },
{ timestamp: 23 } ]

如果对象位于数组中,则可以按其时间戳值对其进行排序:

var arrayObj = [
  {timestamp: 12},
  {timestamp: 10},
  {timestamp: 2},
  {timestamp: 23}
];
通过调用array.prototype.sort()方法按对象的时间戳属性对对象数组进行排序,如下所示:

arrayObj.sort(function (a,b) {
  return a.timestamp - b.timestamp;
});
这应该输出:

[ { timestamp: 2 },
{ timestamp: 10 },
{ timestamp: 12 },
{ timestamp: 23 } ]

您的原始数据看起来如何?@FelixMosheev请参阅更新的JSON对象定义问题什么是
object
?你说这是一张单子。如果它不是一个数组,它是从库中来的吗?对象在列表[]@4castle它是从数据库中提取的,它是一个JSON对象列表显示原始数据的样子?@FelixMosheev查看更新的JSON对象定义问题什么是
对象
?你说这是一张单子。如果它不是一个数组,它是从库中来的吗?对象在list[]@4castle中。它是从数据库中提取的,它是一个JSON对象列表。我不明白的是,JSON对象不应该被视为数组,对吗?还有,为什么我的原始排序函数只在某些时候起作用?我不明白的是,JSON对象不应该被视为数组,对吗?还有,为什么我原来的排序函数只在某些时候起作用?