Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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 使用日期对对象的JQuery排序数组_Javascript_Jquery_Date - Fatal编程技术网

Javascript 使用日期对对象的JQuery排序数组

Javascript 使用日期对对象的JQuery排序数组,javascript,jquery,date,Javascript,Jquery,Date,我有一个对象数组,每个对象中都包含lastModifiedDate属性。 我想根据lastModifiedDate属性按升序和降序对对象数组进行排序。如果日期相同,则排序应基于日期的时间 var completeData = [{name: 'xyz', lastModifiedDate: 1579329711458}, {name: 'abc', lastModifiedDate: 1579339014519}] 我已尝试使用以下代码对上述数组进行排序 对于升序: completeData.

我有一个对象数组,每个对象中都包含lastModifiedDate属性。 我想根据lastModifiedDate属性按升序和降序对对象数组进行排序。如果日期相同,则排序应基于日期的时间

var completeData = [{name: 'xyz', lastModifiedDate: 1579329711458}, {name: 'abc', lastModifiedDate: 1579339014519}]
我已尝试使用以下代码对上述数组进行排序

对于升序:

completeData.sort(function(a, b){
   return new Date( a.lastModifiedDate ) < new Date( b.lastModifiedDate );
});
completeData.sort(function(a, b){
    return new Date( a.lastModifiedDate ) > new Date( b.lastModifiedDate );
});

如果
lastModifiedDate
是时间戳的数字值,那么为什么需要比较这些时间戳的日期对象?您只能比较这些数字,以便高效执行排序,如下所示

completeData.sort(function(a, b){
   return  a.lastModifiedDate - b.lastModifiedDate;
});
当您需要显示日期格式时,您可以使用日期对象进行演示。

用于降序

completeData.sort(function(a, b){
                var nameA= a.lastModifiedDate, nameB=b.lastModifiedDate
                if (nameA < nameB) 
                    return 1 
                if (nameA > nameB)
                    return -1
                return 0 //default return value (no sorting)
            });
completeData.sort(function(a, b){
                    var nameA= a.lastModifiedDate, nameB=b.lastModifiedDate
                    if (nameA < nameB) 
                        return -1 
                    if (nameA > nameB)
                        return 1
                    return 0 //default return value (no sorting)
                });
completeData.sort(函数(a,b){
变量nameA=a.lastModifiedDate,nameB=b.lastModifiedDate
if(nameA名称B)
返回-1
返回0//默认返回值(无排序)
});
为了提升

completeData.sort(function(a, b){
                var nameA= a.lastModifiedDate, nameB=b.lastModifiedDate
                if (nameA < nameB) 
                    return 1 
                if (nameA > nameB)
                    return -1
                return 0 //default return value (no sorting)
            });
completeData.sort(function(a, b){
                    var nameA= a.lastModifiedDate, nameB=b.lastModifiedDate
                    if (nameA < nameB) 
                        return -1 
                    if (nameA > nameB)
                        return 1
                    return 0 //default return value (no sorting)
                });
completeData.sort(函数(a,b){
变量nameA=a.lastModifiedDate,nameB=b.lastModifiedDate
if(nameA名称B)
返回1
返回0//默认返回值(无排序)
});

这是日期。

升序排序和降序排序的代码示例看起来都一样。我没有更改较大和较小的符号。无需将
lastModifiedDate
转换为
日期。代码正常工作。谢谢。你能接受这个答案吗@TalesI已按原样接受上述代码shorter@Tales请检查JSFIDLE是否正常工作。。如果要按降序排列,则必须使用
返回b.lastModifiedDate-a.lastModifiedDate谢谢你。它起作用了
var completeData = [
  {
     name: 'xyz', 
     lastModifiedDate: 1579329711458
  },
  {
     name: 'abc', 
     lastModifiedDate: 1579339014519
  }
];
var result = completeData.sort(function (a, b) {
   return b.lastModifiedDate - a.lastModifiedDate;
})

console.log(result);