質問: {'drink':[], 'food':[]}; _.forEach(noName, (itemObj) => { eachCategoryItemsObj[itemObj.category].push(itemObj); }); ```
回答: > > - 以下のオブジェクト変数は、バーコード番号をキーとして商品の情報を取得出来るようにしております。 > > - これは、後でlodashのforEachで回すことを考えておりますので、 > > > このitemsってそもそも何度も作り直すのですか? データ構造から推測するに、最初に1回作っておしまいだと思うのですが...... 初手は配列、使う段階になってインデックス付きのオブジェクトを生成すれば綺麗に片付きますね。 itemsの配列が数千の要素数にならない限りgroupBy使うのが綺麗に表現できます。 ``` const items = [ { barcode: 1, name: "name_1", taxInPrice: 123, category:'drink', }, { barcode: 2, name: "name_2", taxInPrice: 108, category:'drink', }, { barcode: 3, name: "name_3", taxInPrice: 154, category:'food', }, ]; // バーコードはユニークだからitemsByBarcode1件の配列になるとは思うけど const itemsByBarcode = _.groupBy(items, _.property('barcode')); const itemsByCategory = _.groupBy(items, _.property('category')); // ネストさせたらこんな感じか?(動作未検証) const itemsByCategoryBarcode = _(items) .groupBy(_.property('category')) .map(it => _.groupBy(it, _.property('barcode'))) .value(); ``` 各命名に関して > > itemObjs > > > itemObjsは実体的にも論理的にも寄り添えてない存在に思えますね。 ○○を元に区切る時はLodashのgroupByにあやかって`itemByBarcode`という風に命名しています。 > > eachCategoryItemsObj > > > eachにはforEachと言った風に処理に着目することが多いですね。 なのでeachを見たら身構えます。