我试图弄清楚如何将一个车辆对象数组转换为数组嵌套对象属性,这些对象只是修剪/年唯一的 . 最初我循环遍历所有属性以将车辆组织成阵列的分层结构,即,[模型[trim [year []]]],但我认为通过对象属性查找车辆会更快,即,make.model.trim.year . 我是一个lodash菜鸟,所以我不知道该怎么做 .
返回的数据结构如下:
[
{
id:1
makeCode:"Make1"
modelCode:"Modela"
selected:true
trimCode:"D"
yearCode:"2014"
},
{
id:2
makeCode:"Make1"
modelCode:"Modela"
selected:true
trimCode:"D"
yearCode:"2015"
},
{
id:3
makeCode:"Make1"
modelCode:"Modela"
selected:true
trimCode:"D"
yearCode:"2016"
},
{
id:4
makeCode:"Make1"
modelCode:"Modela"
selected:true
trimCode:"LX"
yearCode:"2014"
},
{
id:5
makeCode:"Make1"
modelCode:"Modela"
selected:true
trimCode:"LX"
yearCode:"2015"
},
{
id:6
makeCode:"Make1"
modelCode:"Modela"
selected:true
trimCode:"LX"
yearCode:"2016"
},
{
id:7
makeCode:"Make2"
modelCode:"Modelb"
selected:true
trimCode:"D"
yearCode:"2014"
},
{
id:8
makeCode:"Make2"
modelCode:"Modelb"
selected:true
trimCode:"D"
yearCode:"2015"
},
{
id:9
makeCode:"Make2"
modelCode:"Modelb"
selected:true
trimCode:"D"
yearCode:"2016"
}
]
这正是为了获取makeCode排序的对象:
vm.makeGroups = _.groupBy(vm.selectedVehcileTypes, function(v) { return v.makeCode});
但我想在每个级别都这样做,所以我有类似的东西:
vm.makeGroups = _.groupBy(vm.selectedVehcileTypes, function(v) { return v.makeCode});
vm.modelGroups = _.groupBy(vm.makeGroups, function(v) { return v.modelCode});
vm.trimGroups = _.groupBy(vm.modelGroups, function(v) { return v.trimCode});
基本上我想链接分组,以便最终结果如下所示:
{
Make1: {
modela: {
D: {
'2012': false,
'2013': false
'2014': true // selected
}
}
}
}
}
任何帮助表示赞赏,谢谢 .
1 回答
下面的解决方案使用
_.reduce()
和_.setWith()
的组合作为主要功能来获得最终结果 .