Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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-对JSON字符串中的数组元素进行排序_Javascript_Json_Sorting - Fatal编程技术网

JavaScript-对JSON字符串中的数组元素进行排序

JavaScript-对JSON字符串中的数组元素进行排序,javascript,json,sorting,Javascript,Json,Sorting,如何使用JavaScript对下面的JSON字符串进行排序 输入: [{time:'1 hours ago'}, {time:'10 minutes ago'}, {time:'2 minutes ago'}] 输出: [{time:'2 minutes ago'}, {time: '10 minutes ago'}, {time:'1 hours ago'}] 这是一个粗略的样品 var getVal = function(timeStr){ var arr = timeStr.s

如何使用JavaScript对下面的JSON字符串进行排序

输入:

[{time:'1 hours ago'}, {time:'10 minutes ago'}, {time:'2 minutes ago'}]
输出:

[{time:'2 minutes ago'}, {time: '10 minutes ago'}, {time:'1 hours ago'}]

这是一个粗略的样品

var getVal = function(timeStr){
    var arr = timeStr.split(" ");
    var factor = 1;
    switch(arr[1]){
        case "minutes":factor = 1;   break;
        case "hours"  :factor = 60;  break;
        case "days"   :factor = 1440;break;
    }
    return parseInt(arr[0]) * factor;
}

var tgt = [{time:'2 minutes ago'}, {time: '10 minutes ago'}, {time:'1 hours ago'}];

tgt.sort(function(a,b){
    return getVal(a.time) - getVal(b.time);
});

console.log(tgt);

当它以
String
格式表示时,您将很难对其进行排序。是否有任何原因说明它不是unix时间戳格式?使用
Number
类型进行排序要容易得多,因为您希望它从最新到最旧。解析像“2分钟前”这样的字符串将导致JS中的日期无效。您可能需要考虑将输入值更改为一些有效的时间戳格式。阅读。使用JS,您需要将语言转换为数字,例如:分钟->2,10,60(这里1小时转换为分钟,条件是小时数*60,等等),这将使排序任务更容易,数据更统一