2016-04-01 7 views
0

次のコードは、特定のカテゴリのオブジェクトを検索し、panoramaCats配列にそれをプッシュする_.findを使用して、オブジェクトの配列thorughループ:Lodashで配列から多くの結果を見つけるには?

this.panoramas.forEach(panorama => { 
    const panoramaCat = _.find(this.panoramas, { category: panorama.category }) 
    const panoramaCats = [] 
    panoramaCats.push(panoramaCat) 
    payload[panorama.category] = panoramaCats 
}) 

私は_.findは、そのカテゴリですべてのオブジェクトを見つけるだろうと思ったが、それ最初のものだけを見つけます。

コードを変更する方法_.findは、そのカテゴリのすべてのオブジェクトを検出しますか?

答えて

1

._matchesを使用して、条件に一致するオブジェクトを検索してください。

this.panoramas.forEach(panorama => { 
    const panoramaCats = _.find(this.panoramas, _.matches({ category: panorama.category })) 
    payload[panorama.category] = panoramaCats 
}) 
0
this.panoramas.forEach(panorama => { 
    payload[panorama.category] = _.find(this.panoramas, {category: panorama.category}) 
}) 
0

あなたが_.groupByを使用して検討していますか?私はあなたのコレクションを手動でループするよりも簡単だと思います。あなたのペイロード・オブジェクト内の他の既存のプロパティを保持する必要がある場合は

payload = _.groupBy(this.panoramas, 'category') 

あなたは_.merge使用できます。

payload = _.merge(payload, _.groupBy(this.panoramas, 'category')) 
関連する問題