我正在使用lodash的_.groupBy来得出以下数据:
{
"Generic Drugs":[
{
itemDes: "Dulcolax",
itemGeneric: "Bisacodyl",
price: '10'
},
{
itemDes: "Celine",
itemGeneric: "Ascorbic Acid",
price: '10'
},
{
itemDes: "Vitamic C",
itemGeneric: "Ascorbic Acid",
price: '10'
}
],
"None-generic Drugs" : [
{
itemDes: "test 1",
itemGeneric: "",
price: '10'
},
{
itemDes: "test 2",
itemGeneric: "",
price: '10'
}
]
}我想通过属性itemGeneric对通用药物对象中的对象进行分组,得到如下输出:
{
"Generic Drugs":[
"Ascorbic Acid" : [
{ itemDes: "Celine" },
{ itemDesc: "Vitamin C" }
],
"Bisacodyl" : [
{ itemDes: "Dolculax" }
]
"None-generic Drugs" : [
{
itemDes: "test 1",
itemGeneric: "",
price: '10'
},
{
itemDes: "test 2",
itemGeneric: "",
price: '10'
}
]
}请谁来帮我解决这个问题。谢谢你的回答。:)
发布于 2016-11-30 17:28:02
对分组后的数据使用_.mapValues(),并按“itemGeneric”对每个值进行分组:
_.mapValues(grouped, function(group, key) {
return key === 'Generic Drugs' ? _.groupBy(group, 'itemGeneric') : group;
});
var grouped = {
"Generic Drugs": [{
itemDes: "Dulcolax",
itemGeneric: "Bisacodyl",
price: '10'
}, {
itemDes: "Celine",
itemGeneric: "Ascorbic Acid",
price: '10'
}, {
itemDes: "Vitamic C",
itemGeneric: "Ascorbic Acid",
price: '10'
}],
"None-generic Drugs": [{
itemDes: "test 1",
itemGeneric: "",
price: '10'
}, {
itemDes: "test 2",
itemGeneric: "",
price: '10'
}]
};
var result = _.mapValues(grouped, function(group, key) {
return key === 'Generic Drugs' ? _.groupBy(group, 'itemGeneric') : group;
});
console.log(result);<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.2/lodash.min.js"></script>
如果原始数据项如下所示:
{
type: "Generic Drugs",
itemDes: "Dulcolax",
itemGeneric: "Bisacodyl",
price: '10'
}您可以执行以下操作:
_(originalData).groupBy('type').mapValues(grouped, function(group, key) {
return key === 'Generic Drugs' ? _.groupBy(group, 'itemGeneric') : group;
});https://stackoverflow.com/questions/40883389
复制相似问题