【JavaScript/TypeScript】辞書型をMap型に変換して2次元配列的に処理する

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【JavaScript/TypeScript】辞書型をMap型に変換して2次元配列的に処理する

2023-11-21 | ,

JavaScriptやTypeScriptで辞書型をMap型に変換して2次元配列的に処理したい!

概要

今回の記事では、JavaScriptやTypeScriptで辞書型をMap型に変換して2次元配列的に処理する手順を掲載する。

仕様書

環境

  • TypeScript 5.2.2

手順書

下記みたいな構造の辞書型のオブジェクトがあるとして

interface Employee {
    name: string,
    groupId: number,
};

let employees: Record<string, Employee> = {};

groupIdを1次元、他を2次元(こういう表現でいいのかは怪しい)として処理するにはMap型に変換して処理をする。

以下は、前述の辞書型をMap型に変換してgroupId別のnameの配列をなにかにセットする例。

// RecordをMapに変換
let map = new Map();
employees.forEach(employee => {
    if (!map.has(employee[1].groupId)) {
        map.set(employee[1].groupId, []);
    }

    map.get(employee[1].groupId).push(employee[1]);
});

// Mapを2次元的に処理
for (let [groupId, emps] of map.entries()) {
    let names: string[] = [];
    for (let i = 0; i < emps.length; i++) {
        names.push(emps[i].name);
    }

    //配列をなにかにセット的な
    setNames(names);
}

まとめ(感想文)

1次元でソートしてから処理をすればいいかもと思うかもだけども、2次元みたいにして処理した方がケースによっては境界の処理がしやすかったり。