如何使用 Lodash 从数组中查找多个结果?

How to find many results from an array with Lodash?

以下代码遍历对象数组,使用 _.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 找到属于该类别的所有对象?

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

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

您是否考虑过使用 _.groupBy?我认为这比手动遍历 collection.

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

如果您需要在负载中保留其他 pre-existing 属性 object 您可以使用 _.merge:

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