如何使用Lodash从数组中找到许多结果?

时间:2016-04-01 01:44:49

标签: javascript lodash

以下代码循环使用Object数组,使用_.find查找某个类别的对象并将其推送到panoramaCats数组中:

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

我认为_.find会找到具有该类别的所有对象,但它只找到第一个。

如何更改代码,以便_.find找到具有该类别的所有对象?

3 个答案:

答案 0 :(得分:1)

使用._matches查找符合条件的对象。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您是否考虑过使用_.groupBy?我认为这比手动循环收藏更简单。

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

如果您需要保留有效负载对象中的其他预先存在的属性,可以使用_.merge

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