Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptで年と月を持つ文字列の配列を並べ替える


次のような月と年を組み合わせた文字列を含む文字列の配列があるとします-

const arr = ["2009-feb", "2009-jan", "2010-mar", "2010-jan", "2011-jul",
"2011-sep", "2011-jan", "2012-jan", "2012-dec", "2012-feb", "2013-may",
"2013-jul", "2013-jun", "2014-jan", "2014-dec", "2014-may", "2015-may",
"2015-jan", "2015-jun", "2016-jan", "2016-dec"];

このような配列を1つ取り込んで、これらの日付を古いものから新しいものの順に並べ替えるJavaScript関数を作成する必要があります。

このためのコードは-

になります
const arr = ["2009-feb", "2009-jan", "2010-mar", "2010-jan", "2011-jul",
"2011-sep", "2011-jan", "2012-jan", "2012-dec", "2012-feb", "2013-may",
"2013-jul", "2013-jun", "2014-jan", "2014-dec", "2014-may", "2015-may",
"2015-jan", "2015-jun", "2016-jan", "2016-dec"];
const sorter = (a, b) => {
   const getDate = date => {
      let day = date.split('-');
      day[1] = {
         jan: 1, feb: 2, mar: 3, apr: 4, may: 5, jun: 6, jul: 7, aug: 8, sep: 9, oct: 10, nov: 11, dec: 12
      }
      [day[1]
      .substring(0, 3)
      .toLowerCase()] || 0;
      return day;
   }
   const aDate = getDate(a);
   const bDate = getDate(b);
   return aDate[0] - bDate[0] || aDate[1] - bDate[1];
}
arr.sort(sorter);
console.log(arr);

出力

そして、コンソールの出力は-

になります
[
   '2009-jan', '2009-feb',
   '2010-jan', '2010-mar',
   '2011-jan', '2011-jul',
   '2011-sep', '2012-jan',
   '2012-feb', '2012-dec',
   '2013-may', '2013-jun',
   '2013-jul', '2014-jan',
   '2014-may', '2014-dec',
   '2015-jan', '2015-may',
   '2015-jun', '2016-jan',
   '2016-dec'
]

  1. JavaScriptの配列で、数値を昇順で並べ替え、文字列をアルファベット順に並べ替える

    問題 数値と文字列の配列を受け取るJavaScript関数を作成する必要があります。この関数は、最初に数値が昇順で並べ替えられ、次に文字列がアルファベット順に並べ替えられた単一の配列を返すことになっています。 値は元のタイプを維持する必要があります。 例 以下はコードです- const arr = [5, 8, 'car', 'dad', 'amber', 1, 12, 76, 'bat']; const separateSort = (arr = []) => {    const sorter

  2. 文字列の2次元配列を並べ替え、JavaScriptを使用して対角要素を見つける

    問題 n個の文字列の配列を受け取るJavaScript関数を作成する必要があります。また、配列内の各文字列は正確にn文字で構成されています。 この関数は、最初に配列をアルファベット順にソートする必要があります。次に、左上隅から始まる主対角線に存在する文字によって形成された文字列を返します。 例 以下はコードです- const arr = [    'star',    'abcd',    'calm',    'need' ]; const s