【发布时间】:2016-08-05 22:24:34
【问题描述】:
我试图弄清楚如何将仅按装饰/年份唯一的车辆对象数组转换为数组嵌套对象属性。最初,我循环遍历所有属性以将车辆组织成数组的层次结构,即 make[model[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
}
}
}
}
}
感谢您的帮助。
【问题讨论】: