Javascript 如何按子属性对相同对象的数组进行排序?

Javascript 如何按子属性对相同对象的数组进行排序?,javascript,arrays,sorting,properties,Javascript,Arrays,Sorting,Properties,我有一系列项目,如下所示: myarray = [ { somedate: "2018-01-11T00:00:00", name: "John Doe", level: 6000 }, { somedate: "2017-12-18T00:00:00", name: "Don Jhoe", level: 53 }, { somedate: "2016-12-18T00:0

我有一系列项目,如下所示:

myarray = [
    {
      somedate: "2018-01-11T00:00:00",
      name: "John Doe",
      level: 6000
    },
    {
      somedate: "2017-12-18T00:00:00",
      name: "Don Jhoe",
      level: 53
    },
    {
      somedate: "2016-12-18T00:00:00",
      name: "Jane Doe",
      level: 100
    },
    {
      somedate: "2018-10-18T00:00:00",
      name: "Dane Joe",
      level: 1
    }
]
我试图弄清楚如何对这个数组进行排序,以便它按日期排序。我知道如何对简单属性数组进行排序:

但是,如何最好地按照数组的items属性对数组进行排序呢


编辑:是的,这些确实是由一个不处理时间的奇怪web服务提供的不正确的日期字符串

您发布的代码实际上运行良好。 您只需比较
somedate
而不是
date
,然后将最终排序结果分配给原始排序结果(如果需要)


您发布的代码实际上运行良好。 您只需比较
somedate
而不是
date
,然后将最终排序结果分配给原始排序结果(如果需要)

通过使用兼容日期,您可以使用字符串比较器,因为值(年、月、日、小时等)的组织是递减的,并且每个单位的长度相同

var数组=[{somedate:“2018-01-11T00:00:00”,name:“John Doe”,级别:6000},{somedate:“2017-12-18T00:00:00”,name:“Don Jhoe”,级别:53},{somedate:“2016-12-18T00:00:00”,name:“Jane Doe”,级别:100},{somedate:“2018-10-18T00:00:00:00”,name:“Dane Joe”,级别:1});
sort({somedate:a},{somedate:b})=>b.localeCompare(a));//描述
console.log(数组)
.as console wrapper{max height:100%!important;top:0;}
通过具有兼容的日期,您可以使用字符串比较器,因为值的组织(年、月、日、小时等)是递减的,并且每个单位的长度相同

var数组=[{somedate:“2018-01-11T00:00:00”,name:“John Doe”,级别:6000},{somedate:“2017-12-18T00:00:00”,name:“Don Jhoe”,级别:53},{somedate:“2016-12-18T00:00:00”,name:“Jane Doe”,级别:100},{somedate:“2018-10-18T00:00:00:00”,name:“Dane Joe”,级别:1});
sort({somedate:a},{somedate:b})=>b.localeCompare(a));//描述
console.log(数组)

.as console wrapper{max height:100%!important;top:0;}
Its
somedate
not
date
如果您只需将
a.date
更改为
a.somedate
并对
b
子项执行相同操作,您的意思是什么?“不正确的日期字符串”-它们可能缺少毫秒和时区,但事实确实如此。只要这些日期字符串要么全部包含时区,要么不包含时区,它就应该可以工作(否则您可能会在Safari中遇到问题)。如果您只需将
a.date
更改为
a.somedate
,并对
b
子项执行相同的操作,它的
somedate
就可以工作了?“不正确的日期字符串”-它们可能缺少毫秒和时区,但确实如此。只要这些日期字符串全部或全部不包含时区,它就可以工作(否则您可能会在Safari中遇到问题)。无法为树查看林。谢谢您无法为树查看林。谢谢
array.sort(function(a,b){
      // Turn your strings into dates, and then subtract them
      // to get a value that is either negative, positive, or zero.
      return new Date(b.date) - new Date(a.date);
    });
myarray = myarray.sort(function(a,b){
      return new Date(b.somedate) - new Date(a.somedate);
    });