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