如何使用 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'))
以下代码遍历对象数组,使用 _.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'))