基于时间排序JSON JS对象

Sorting JSON JS Object based on Time

本文关键字:排序 JSON JS 对象 时间 于时间      更新时间:2023-09-26

我有一个JS对象JSON。我需要根据时间

进行排序

我已经在时间上做了一些转换,并将SqlTime stamp转换为JS Date时间。

需要根据时间对以下内容进行排序

[
{
"file_name":"150412-001070",
"date_time":"2015-07-21T13:11:55.000Z",
"polpospercent":68.95,"polnegpercent":31.05,
"Anger":6.58,
"Surprise":32.87,
"Sadness":32.87,
"Joy":4.59,
"Disgust":13.84,
"Fear":9.26,
"file_ts":"2014-04-26T22:03:00.000Z"
},
{"file_name":"150412-001070",
"date_time":"2015-07-21T13:11:55.000Z",
"polpospercent":68.95,"polnegpercent":31.05,
"Anger":6.58,
"Surprise":32.87,
"Sadness":32.87,
"Joy":4.59,
"Disgust":13.84,
"Fear":9.26,
"file_ts":"2014-05-26T22:03:00.000Z"
}
]

在数组上使用filter函数:

var a = [
{
"file_name":"150412-001070",
"date_time":"2013-07-21T13:11:55.000Z",
"polpospercent":68.95,"polnegpercent":31.05,
"Anger":6.58,
"Surprise":32.87,
"Sadness":32.87,
"Joy":4.59,
"Disgust":13.84,
"Fear":9.26,
"file_ts":"2014-04-26T22:03:00.000Z"
},
{"file_name":"150412-001070",
"date_time":"2014-07-21T14:11:55.000Z",
"polpospercent":68.95,"polnegpercent":31.05,
"Anger":6.58,
"Surprise":32.87,
"Sadness":32.87,
"Joy":4.59,
"Disgust":13.84,
"Fear":9.26,
"file_ts":"2014-05-26T22:03:00.000Z"
},
{"file_name":"150412-001070",
"date_time":"2017-07-21T18:11:55.000Z",
"polpospercent":68.95,"polnegpercent":31.05,
"Anger":6.58,
"Surprise":32.87,
"Sadness":32.87,
"Joy":4.59,
"Disgust":13.84,
"Fear":9.26,
"file_ts":"2014-05-26T22:03:00.000Z"
},
{"file_name":"150412-001070",
"date_time":"2010-07-21T13:11:55.000Z",
"polpospercent":68.95,"polnegpercent":31.05,
"Anger":6.58,
"Surprise":32.87,
"Sadness":32.87,
"Joy":4.59,
"Disgust":13.84,
"Fear":9.26,
"file_ts":"2014-05-26T22:03:00.000Z"
}
]
var b = a.sort(function(x,y){
  return new Date(x.date_time).getTime() - new Date(y.date_time).getTime();
})
console.log(b);

得到一些参考

function sort(jsonArray, key){
                if(jsonArray){
                   var sortedArray = jsonArray.sort(function(left, right) { 
                                     //array.sort is buit-in function
                       var a = left[key];
                       var b = right[key];
                       if (a !== b) {
                           if (a > b || a === void 0) return 1;
                           if (a < b || b === void 0) return -1;
                       }
                       return 0;
                  });
                  return sortedArray;
                }
            }

似乎可以

使用排序函数,将其转换为js date obj.

var array=[
{
"file_name":"150412-001070",
"date_time":"2015-07-21T13:11:55.000Z",
"polpospercent":68.95,"polnegpercent":31.05,
"Anger":6.58,
"Surprise":32.87,
"Sadness":32.87,
"Joy":4.59,
"Disgust":13.84,
"Fear":9.26,
"file_ts":"2014-04-26T22:03:00.000Z"
},
{"file_name":"150412-001070",
"date_time":"2015-07-21T13:11:55.000Z",
"polpospercent":68.95,"polnegpercent":31.05,
"Anger":6.58,
"Surprise":32.87,
"Sadness":32.87,
"Joy":4.59,
"Disgust":13.84,
"Fear":9.26,
"file_ts":"2014-05-26T22:03:00.000Z"
}
];
console.log(array);
var sortedArray=array.sort(function(a,b){
  return new Date(a.file_ts)- new Date(b.file_ts);
})
console.log(sortedArray);

您可以使用sort()为您的数组提供自定义排序函数

yourjsonobject.sort(function(a, b) {
  if (a.date_time < b.date_time) {
    return -1;
  }
  if (a.date_time > b.date_time) {
    return 1;
  }
  return 0;
});

尝试使用这个排序函数。这对我有用!

var files= [
    {
    "file_name":"150412-001070",
    "date_time":"2015-07-21T13:11:55.000Z",
    "polpospercent":68.95,"polnegpercent":31.05,
    "Anger":6.58,
    "Surprise":32.87,
    "Sadness":32.87,
    "Joy":4.59,
    "Disgust":13.84,
    "Fear":9.26,
    "file_ts":"2014-04-26T22:03:00.000Z"
    },
    {
    "file_name":"150412-001070",
    "date_time":"2015-07-21T13:11:55.000Z",
    "polpospercent":68.95,"polnegpercent":31.05,
    "Anger":6.58,
    "Surprise":32.87,
    "Sadness":32.87,
    "Joy":4.59,
    "Disgust":13.84,
    "Fear":9.26,
    "file_ts":"2014-05-26T22:03:00.000Z"
    }
    ];
function sortFiles() {
    files = files.sort(function(a, b) {
        return a["file_ts"]- b["file_ts"];
    });
}

在创建日期对象后使用getTime()方法并使用过滤器方法。你也可以用moment来比较日期。

但这是简单的:-

array.sort(function(a, b){
  return new Date(a.date_time).getTime() < new Date(b.date_time).getTime();
});

按时间排序可以使用orderBy运算符

orderBy使用表达式筛选特定的数组。

{{[
    {
        "file_name": "150412-001070",
        "date_time": "2015-07-21T13:11:55.000Z",
        "polpospercent": 68.95,
        "polnegpercent": 31.05,
        "Anger": 6.58,
        "Surprise": 32.87,
        "Sadness": 32.87,
        "Joy": 4.59,
        "Disgust": 13.84,
        "Fear": 9.26,
        "file_ts": "2014-04-26T22:03:00.000Z"
    },
    {
        "file_name": "150412-001070",
        "date_time": "2015-07-21T13:11:55.000Z",
        "polpospercent": 68.95,
        "polnegpercent": 31.05,
        "Anger": 6.58,
        "Surprise": 32.87,
        "Sadness": 32.87,
        "Joy": 4.59,
        "Disgust": 13.84,
        "Fear": 9.26,
        "file_ts": "2014-05-26T22:03:00.000Z"
    }
] | orderBy : '+date_time'}} 

您可以传递+-来强制按升序或降序排序。