Array.sort()比较函数返回undefined

我正在尝试排序从最旧到最新的字符串日期数组。我设置了几个比较功能,但控制台说的aundefined。出了什么问题?

//Sort an array of dates in this formatconst dates = ['10','23 Apr 2018','01 Jun 1943','05 Aug 2055','22 Sep 1902''18 Aug 1970','01 
Jan 1940','08 Mar 2018','11 Feb 1982','17 Mar 1927',  ];
//remove the data that is not in the correct formatconst cleanedDates = dates.filter(date => date.length === 11);
//isolate the day, convert to numberconst getDay = (str) => {
  return parseInt(str.slice(0,2));};//create a dictionary of monthsconst monthDict = {
  Jan: 1,
  Feb: 2,
  Mar: 3,
  Apr: 4,
  May: 5,
  Jun: 6,
  Jul: 7,
  Aug: 8,
  Sep: 9,
  Oct: 10,
  Nov: 11,
  Dec: 12};//get the month value via dictionaryconst getMonth = (str) => {
  const month = str.slice(3,6);
  return monthDict[month];};//get the year, convert to numberconst getYear = (str) => {
  return parseInt(str.slice(7));}//comparison helper functions//compare dayconst compareDay = (a,b) => {
  if (getDay(a) < getDay(b)) {
    return -1;
  } else if (getDay(a) === getDay(b)) {
    return 0;
  }
  } else if (getDay(a) > getDay(b)) {
    return 1;
  }};//compare monthconst compareMonth = (a,b) => {
  if (getMonth(a) < getMonth(b)) {
    return -1
  } else if (getMonth(a) === getMonth(b)) {
    compareDay(a,b);
  } else if (getMonth(a) > getMonth(b)) {
    return 1;
  }};//compare yearconst compareYear = (a,b) => {
  if (getYear(a) < getYear(b)) {
    return -1;
  } else if (getYear(a) === getYear(b)) {
    compareMonth(a,b);
  }
  } else if (getYear(a) > getYear(b)) {
    return 1
  }};//sort arrayconst sortedArray = cleanedDates.sort((a,b) => compareYear(a,b));console.log(sortedArray);


富国沪深
浏览 845回答 2
2回答

慕丝7291255

清理日期数组后没有语法错误,请尝试以下操作:// convert to datedates.map( el => new Date(el));// sort itdates.sort( (a,b) => a>b);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript