JavaScript の Array.prototype.groupBy


Array.prototype.groupBy は最近でした.

これはブラウザーでまだサポートされていない新機能であるため、今すぐ試してみたい場合は、SkyPack を使用してポリフィルを提供できます.

import 'https://cdn.skypack.dev/core-js/actual/array/group-by';


この最初の例では、名前を最初の文字でアルファベット順にグループ化しています.

const namesArray = ['Heidi', 'Barry', 'Oliver', 'Williams', 'Willis', 'Werther', 'Wallis'];
const groupedNames = namesArray.groupBy(name => name[0].toUppercase());
console.log(groupedNames);


これはログに記録されます:

{
    "H": [
        "Heidi"
    ],
    "B": [
        "Barry"
    ],
    "O": [
        "Oliver"
    ],
    "W": [
        "Williams",
        "Willis",
        "Werther",
        "Wallis"
    ]
}


奇数と偶数をグループ化する例を次に示します.

const numbers = [1,2,3,4,5,6];
numbers.groupBy(number => number % 2 === 0 ? 'even' : 'odd');


絵文字と絵文字以外の文字列をグループ化する例を次に示します.

const strings ['hi', 'bye', 'Merry Christmas', '', '🐶'];
const groupedByIsEmoji = strings.groupBy(string => /\p{Extended_Pictographic}/u.test(string) ? 'Emoji' : 'Non-Emoji');


次の例では、フィルム オブジェクトの配列を受け取り、 year プロパティに従ってオブジェクトをグループ化します.

  const films = [{
      name: 'The Terminator',
      year: 1984
  }, {
      name: 'Blade Runner',
      year: 1982
  }, {
      name: 'Red Dawn',
      year: 1984
  }, {
      name: 'The Wrath of Khan',
      year: 1982
  }];

  const groupedByYear = films.groupBy(film => film.year);