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-inlodash
功能可以为您的具体案例服务。因此,我编写了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))