首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当MM/DD/YYYY是字符串时,对它们进行排序?

当MM/DD/YYYY是字符串时,对它们进行排序?
EN

Stack Overflow用户
提问于 2022-05-30 15:57:21
回答 2查看 54关注 0票数 -4

我如何正确地排序这些降序?我尝试过arr.sort() arr.sort().reverse(),查看了所有堆栈溢出.我想不出办法来做这个。每件事都试图对它们进行分类,但却做错了。

代码语言:javascript
复制
[
  '1/19/2024',  '1/20/2023',
  '10/21/2022', '11/18/2022',
  '12/16/2022', '3/17/2023',
  '6/10/2022',  '6/16/2023',
  '6/17/2022',  '6/21/2024',
  '6/24/2022',  '6/3/2022',
  '6/31/2022',  '7/15/2022',
  '7/8/2022',   '8/19/2022',
  '9/15/2023',  '9/16/2022'
]

然后我需要把它们变成真正的月份。简,二月等,而不是数值.

EN

回答 2

Stack Overflow用户

发布于 2022-05-30 16:10:37

因此,最简单的方法是将字符串转换为日期,对其进行排序,然后将日期转换回字符串格式,请参见:

代码语言:javascript
复制
const origArr = [
  '1/19/2024', '1/20/2023',
  '10/21/2022', '11/18/2022',
  '12/16/2022', '3/17/2023',
  '6/10/2022', '6/16/2023',
  '6/17/2022', '6/21/2024',
  '6/24/2022', '6/3/2022',
  '6/31/2022', '7/15/2022',
  '7/8/2022', '8/19/2022',
  '9/15/2023', '9/16/2022'
];

// create array of dates
const datesArr = origArr.map(str => new Date(str));

// sort array of dates
const datesSortedArr = datesArr.sort((a,b) => b - a);

// convert dates to strings
const sortedArr = datesSortedArr.map(item => {
  const month = item.getMonth() + 1;
  const day = item.getDate();
  const year = item.getFullYear();
  
  return `${month}/${day}/${year}`;
});
console.log('sortedArr:', sortedArr);

票数 0
EN

Stack Overflow用户

发布于 2022-05-30 16:18:18

您可以将它们转换为Date命令,而不是将它们转换回原始格式。

代码语言:javascript
复制
const dates = [
  '1/19/2024',  '1/20/2023',
  '10/21/2022', '11/18/2022',
  '12/16/2022', '3/17/2023',
  '6/10/2022',  '6/16/2023',
  '6/17/2022',  '6/21/2024',
  '6/24/2022',  '6/3/2022',
  '6/31/2022',  '7/15/2022',
  '7/8/2022',   '8/19/2022',
  '9/15/2023',  '9/16/2022'
]

const toDate = string => {
 const [month, day, year] = string.split('/')
 
 return new Date([year, month.padStart(2, '0'), day.padStart(2, '0')].join('-'))
}


const toString = date => [date.getMonth() + 1, date.getDate(), date.getFullYear()].join('/')

const reorder = data => {
 const dates = data.map(toDate)
 dates.sort((a, b) => b - a)
 
 return dates.map(toString)
}

console.log(reorder(dates))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72437064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档