なぜ配列やオブジェクトじゃなくて、Collectionが必要なのか
少しでもJavaScriptの経験があれば、そう思うはずです
配列、オブジェクトだと困る箇所
配列
IDから直接データを取り出せない
js[{ id: 'a' }, { id: 'b' }, { id: 'c' }]
のような配列だと、全ての要素に対して、1つづつIDが一致するか確認する必要がある
1つづつ確認しないといけないので効率が悪い
Discord.jsのように大量のデータを扱う必要があるとき、パフォーマンス上の問題につながる
js{ a: {}, b: {}, c: {} }
オブジェクトなら obj.a
と一発で目的のデータがとれる
オブジェクト
配列のように便利なメソッドがない
b
を除外して a
と c
だけにする場合、配列とオブジェクトだと簡潔さに大きな違いが出てくる
js// 配列の場合
[{ id: 'a' }, { id: 'b' }, { id: 'c' }].filter(e => e.id !== 'b')
// オブジェクトの場合
Object.fromEntries(Object.entries({ a: {}, b: {}, c: {} }).filter(e => e[0] !== 'b'))
更にJavaScriptの仕様上、オブジェクトは
メソッドを自由に追加できない
そこで拡張可能なオブジェクトのような
Mapを拡張することでこれらの問題を解決している
つまり配列とオブジェクトのいいとこ取りをしたような機能がCollection