ex08-05-3

ソース

const words = ["Beachball", "Rodeo", "Angel",
	       "Aardvark", "Xylophone", "November", "Chocolate",
	       "Papaya", "Uniform", "Joker", "Clover", "Bali"];
const alphabetical = words.reduce((a, x) => {
  if(!a[x[0]]) //  先頭文字のプロパティがあるかチェック
    a[x[0]] = []; // なければ空で作成
  a[x[0]].push(x); // 現在の要素を記憶
  // console.log(a[x[0]]); // 途中経過を見るにはこれを有効に
  return a; }, {}); // オブジェクトを返す
console.log(alphabetical);

/* 実行結果
{ B: [ 'Beachball', 'Bali' ],
  R: [ 'Rodeo' ],
  A: [ 'Angel', 'Aardvark' ],
  X: [ 'Xylophone' ],
  N: [ 'November' ],
  C: [ 'Chocolate', 'Clover' ],
  P: [ 'Papaya' ],
  U: [ 'Uniform' ],
  J: [ 'Joker' ] }
*/

// 別の例
const 単語リスト
	= ["ビーチボール", "ルービックキューブ", "ブタペスト", "トロッコ",
	   "コンゴ", "ゴースト", "トーラス", "スマート", "トンガ",
	   "ガラパゴス", "ストリート", "トーマス", "ストレッチ",
	   "チベット", "トキ", "キツツキ", "キリン"];
const 先頭文字で分類したもの = 単語リスト.reduce((a, x) => {
    if(!a[x[0]]) a[x[0]] = [];
    a[x[0]].push(x);
    return a; }, {});
console.log(先頭文字で分類したもの);
/* 実行結果
{ 'ビ': [ 'ビーチボール' ],
  'ル': [ 'ルービックキューブ' ],
  'ブ': [ 'ブタペスト' ],
  'ト': [ 'トロッコ', 'トーラス', 'トンガ', 'トーマス', 'トキ' ],
  'コ': [ 'コンゴ' ],
  'ゴ': [ 'ゴースト' ],
  'ス': [ 'スマート', 'ストリート', 'ストレッチ' ],
  'ガ': [ 'ガラパゴス' ],
  'チ': [ 'チベット' ],
  'キ': [ 'キツツキ', 'キリン' ] }
*/