当前位置: 首页 > 知识库问答 >
问题:

按日期排序对象数组[重复]

伯茂才
2023-03-14

举个例子

myArr= [
    {name:"Joe",  id:3,  date: "2012.10.12"},
    {name:"Ed",   id:43, date: "2012.02.12"},
    {name:"Mark", id:22, date: "2012.02.11"}
];

那么,如何按日期对该数组进行排序?

这只是一个小例子,但它就像数组中的1000个对象。我在互联网上搜索并找到了一些使用排序()函数的示例,但它在我的大数组中不起作用。

共有1个答案

蔺山
2023-03-14

假设日期只是代码中格式相同的字符串,则可以执行以下操作:

myArr.sort( (a,b) => a.date.localeCompare(b.date) )

sort方法将函数作为参数,每次需要比较数组中的两个元素时都会调用该函数。所以,要按特定字段排序,需要传递一个函数来比较传入的两个对象的字段。

排序比较器函数必须返回一个特殊值,指示正确的顺序:-1如果第一个参数(通常称为a)应位于第二个参数(b)之前;1如果b应位于a之前;如果它们相等,则为0(因此顺序无关紧要)。幸运的是,已经有一种方法可以比较字符串并为sort返回正确的值(如果调用a并将b作为参数传递):localeCompare。由于要比较的字段是字符串,因此可以在比较函数中的字段上调用该字符串,以返回正确的排序值。

 类似资料:
  • 我试图排序我的对象数组,这些对象具有按日期最新的第一个和最新的最后一个日期值。 我有以下代码: 请注意,JS Date是新Date()接受的有效日期/格式。 我可以先订购最旧的,但不能先订购最新的,我尝试了以下方法: 当前我不能先按最新日期排序,它只能先按最早的日期排序。 谢啦

  • 我想按日期对对象数组进行排序,但问题是它们的日期是这种格式-。 这里是此数组中一个对象的示例 我必须按修改日期或创建日期对它们进行排序!

  • 问题内容: 我有一个包含一个称为的对象的数组,它具有诸如“日期”,“名称”等属性。 我正在对数组进行排序,如下所示: 应该将日期从新到旧排序。例如: 2016年6月30日 2016年6月29日 等等.. 但是,当我的数组包含“ 2016年7月2日”时,排序后的数组将变为: 2016年6月30日 2016年6月29日 2016年7月2日 排序后,“ 2016年7月2日”应该位于顶部,而现在位于底部?

  • 假设我有一个由几个对象组成的数组: 我如何按日期元素对这个数组进行排序,从最接近当前日期的日期开始,然后按时间向下排序?请记住,数组可能有许多对象,但为了简单起见,我使用了2。 我会使用排序函数和自定义比较器吗?

  • 问题内容: 我有一个json数组,我尝试 按日期对它 进行 排序, 然后再附加它。 该数组如下所示: 目前, 我已经设法对 日期 数组 进行了如下 排序 : 这给了我: 但 我不确定如何对 包含多个键 的复杂数组执行相同的操作 。我知道 我应该先将日期格式设置为YYYY-MM-DD, 但之后会有点混乱。 一个良好的开端将是我目前在jsbin上找到的内容:http ://jsbin.com/ipat

  • 问题内容: 我有一个带有几个键值对的对象数组,我需要根据’updated_at’对它们进行排序: 这样做最有效的方法是什么? 问题答案: 您可以使用。 这是一个例子: