Javascript 基于时间的JSON对象排序
我有一个JS对象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
[
{
"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字符串格式,可提供“自然”排序