【JavaScript/TypeScript】辞書型をMap型に変換して2次元配列的に処理する
2023-11-21 | JavaScript, TypeScript
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次元みたいにして処理した方がケースによっては境界の処理がしやすかったり。