Javascript 基于时间的JSON对象排序

Javascript 基于时间的JSON对象排序,javascript,jquery,json,Javascript,Jquery,Json,我有一个JS对象JSON。我需要根据时间来分类 [ { "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-0

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

[
{
"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"
}
]
我在时间上做了一些转换,并将SqlTime stamp转换为JS日期时间

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

[
{
"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"
}
]

在阵列上使用
过滤器
功能:

var a=[
{
“文件名”:“150412-001070”,
“日期时间”:“2013-07-21T13:11:55.000Z”,
“polpospercent”:68.95,“polnegpercent”:31.05,
“愤怒”:6.58,
“惊喜”:32.87,
“悲伤”:32.87,
“欢乐”:4.59,
“厌恶”:13.84,
“恐惧”:9.26,
“文件”:“2014-04-26T22:03:00.000Z”
},
{“文件名”:“150412-001070”,
“日期时间”:“2014-07-21T14:11:55.000Z”,
“polpospercent”:68.95,“polnegpercent”:31.05,
“愤怒”:6.58,
“惊喜”:32.87,
“悲伤”:32.87,
“欢乐”:4.59,
“厌恶”:13.84,
“恐惧”:9.26,
“文件”:“2014-05-26T22:03:00.000Z”
},
{“文件名”:“150412-001070”,
“日期时间”:“2017-07-21T18:11:55.000Z”,
“polpospercent”:68.95,“polnegpercent”:31.05,
“愤怒”:6.58,
“惊喜”:32.87,
“悲伤”:32.87,
“欢乐”:4.59,
“厌恶”:13.84,
“恐惧”:9.26,
“文件”:“2014-05-26T22:03:00.000Z”
},
{“文件名”:“150412-001070”,
“日期时间”:“2010-07-21T13:11:55.000Z”,
“polpospercent”:68.95,“polnegpercent”:31.05,
“愤怒”:6.58,
“惊喜”:32.87,
“悲伤”:32.87,
“欢乐”:4.59,
“厌恶”:13.84,
“恐惧”:9.26,
“文件”:“2014-05-26T22:03:00.000Z”
}
]
var b=a.sort(函数(x,y){
返回新日期(x.Date\u time).getTime()-新日期(y.Date\u time).getTime();
})

控制台日志(b)
要按时间排序,可以使用
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'}} 
您可以传递
+
-
以强制按升序或降序排序。

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

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;
});
yourjsonobject.sort(函数(a,b){
如果(a.日期时间b.日期时间){
返回1;
}
返回0;
});
获得了一些参考资料

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;
                }
            }
函数排序(jsonArray,键){
如果(jsonArray){
var sortedArray=jsonArray.sort(函数(左、右){
//array.sort是内置函数
var a=左[键];
var b=右[键];
如果(a!==b){
如果(a>b | | a==void 0)返回1;
如果(a

它似乎可以工作

使用排序功能,将其转换为js date obj

var数组=[
{
“文件名”:“150412-001070”,
“日期时间”:“2015-07-21T13:11:55.000Z”,
“polpospercent”:68.95,“polnegpercent”:31.05,
“愤怒”:6.58,
“惊喜”:32.87,
“悲伤”:32.87,
“欢乐”:4.59,
“厌恶”:13.84,
“恐惧”:9.26,
“文件”:“2014-04-26T22:03:00.000Z”
},
{“文件名”:“150412-001070”,
“日期时间”:“2015-07-21T13:11:55.000Z”,
“polpospercent”:68.95,“polnegpercent”:31.05,
“愤怒”:6.58,
“惊喜”:32.87,
“悲伤”:32.87,
“欢乐”:4.59,
“厌恶”:13.84,
“恐惧”:9.26,
“文件”:“2014-05-26T22:03:00.000Z”
}
];
console.log(数组);
var sortedArray=array.sort(函数(a,b){
返回新日期(a.文件)-新日期(b.文件);
})

控制台日志(Darray)尝试使用此排序功能。这对我有用

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()方法,然后使用filter方法。 您还可以使用moment进行日期比较

但简单的是:-

array.sort(function(a, b){
  return new Date(a.date_time).getTime() < new Date(b.date_time).getTime();
});
array.sort(函数(a,b){
返回新日期(a.Date\u time).getTime()<新日期(b.Date\u time).getTime();
});

这是您的答案@Jayesh Goyani您不应该删除AngularJS标签。。。这条线索很可能有正确的AngularJS答案。。。这似乎不是AngularJS的问题,是吗?嘿,为什么投反对票?它被标记为一个有棱角的问题,是吗?我没有看到这个标记。。。现在它不再像这样贴标签了。你是对的,有人把标签拿走了。。。这不是一个好主意。没有必要改变。。。date_time属性采用ISO字符串格式,可提供“自然”排序