generated at
なぜ配列やオブジェクトじゃなくて、Collectionが必要なのか
「なぜ単に配列やオブジェクトを使わずに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の仕様上、オブジェクトはメソッドを自由に追加できない
正確にはできるがprototype汚染が発生するのですべきではない


そこで拡張可能なオブジェクトのようなMapを拡張することでこれらの問題を解決している
つまり配列とオブジェクトのいいとこ取りをしたような機能がCollection