Typescript Lodash:如何按对象数组进行分组?

Typescript Lodash:如何按对象数组进行分组?,typescript,lodash,Typescript,Lodash,我有一个对象数组,如下所示: [ { product: "ABC", features: [1,2,3] }, { product: "CDE", features: [1,2] }, { product: "XYZ", features: [3,4,5] } ] 我正在寻找方法,帮助typescript中的Lodash按功能列表对json进行分组

我有一个对象数组,如下所示:

[
    {
       product: "ABC",
       features: [1,2,3]
      },
    {
       product: "CDE",
       features: [1,2]
      },
      {
       product: "XYZ",
       features: [3,4,5]
      }
]
我正在寻找方法,帮助typescript中的Lodash按功能列表对json进行分组,并得出以下结果:

[
    {
       feature: 1,
       Products: ["ABC","CDE"]
      },
      {
       feature: 2,
       Products: ["ABC","CDE"]
      },
      {
       feature: 3,
       Products: ["ABC","XYZ"]
      },
      {
       feature: 4,
       Products: ["XYZ"]
      },
      {
       feature: 5,
       Products: ["XYZ"]
      }
]

我认为目前还没有一个opt-in
lodash
功能来为您的具体案例服务。因此,我编写了
fn
是执行您期望的功能

功能fn(输入){
const allFeatures=input.reduce((features,cur)=>{
返回u.uniq(u.concat(特征,当前特征))
}, [])
返回allFeatures.map(feature=>({
特写,
产品:input.filter(prod=>prod.features.includes(feature)).map(x=>x.product)
}))
}
常量输入=[
{
产品:“ABC”,
特征:[1,2,3]
},
{
产品:“CDE”,
特色:[1,2]
},
{
产品:“XYZ”,
特征:[3,4,5]
}
]
预期常数=[
{
特点:一,,
产品:['ABC','CDE']
},
{
特点:二,,
产品:['ABC','CDE']
},
{
特点:3,,
产品:['ABC','XYZ']
},
{
特色:四,,
产品:['XYZ']
},
{
特色:五,,
产品:['XYZ']
}
]
console.log('equal expected:',u.isEqual(fn(输入),expected))

我认为目前还没有一个opt-in
lodash
功能可以为您的具体案例服务。因此,我编写了
fn
是执行您期望的功能

功能fn(输入){
const allFeatures=input.reduce((features,cur)=>{
返回u.uniq(u.concat(特征,当前特征))
}, [])
返回allFeatures.map(feature=>({
特写,
产品:input.filter(prod=>prod.features.includes(feature)).map(x=>x.product)
}))
}
常量输入=[
{
产品:“ABC”,
特征:[1,2,3]
},
{
产品:“CDE”,
特色:[1,2]
},
{
产品:“XYZ”,
特征:[3,4,5]
}
]
预期常数=[
{
特点:一,,
产品:['ABC','CDE']
},
{
特点:二,,
产品:['ABC','CDE']
},
{
特点:3,,
产品:['ABC','XYZ']
},
{
特色:四,,
产品:['XYZ']
},
{
特色:五,,
产品:['XYZ']
}
]
console.log('equal expected:',u.isEqual(fn(输入),expected))