【发布时间】:2021-10-18 19:35:18
【问题描述】:
我有以下 JSON:
{
"notebook": [{
"categories": [{
"key": "notebook",
"value": "Notebook"
}],
"companies": [{
"key": "apple",
"value": "Apple"
}],
"brands": [{
"key": "macbook",
"value": "MacBook"
}],
"modelYears": [{
"key": "2021",
"value": "2021"
}],
"models": [{
"key": "2021 Pro",
"value": "2021 Pro"
}]
},
{
"categories": [{
"key": "notebook",
"value": "Notebook"
}],
"companies": [{
"key": "ibm",
"value": "IBM"
},
{
"key": "lenovo",
"value": "Lenovo"
}
],
"brands": [{
"key": "thinkpad",
"value": "Thinkpad"
}],
"modelYears": [{
"key": "2019",
"value": "2019"
}],
"models": [{
"key": "e590",
"value": "E590"
}]
},
{
"categories": [{
"key": "notebook",
"value": "Notebook"
}],
"companies": [{
"key": "ibm",
"value": "IBM"
},
{
"key": "lenovo",
"value": "Lenovo"
}
],
"brands": [{
"key": "thinkpad",
"value": "Thinkpad"
}],
"modelYears": [{
"key": "2019",
"value": "2019"
}],
"models": [{
"key": "p1",
"value": "P1"
}]
}
],
"smartphone": [{
"categories": [{
"key": "smartphone",
"value": "Smartphone"
}],
"companies": [{
"key": "apple",
"value": "Apple"
}],
"brands": [{
"key": "iphone",
"value": "IPHONE"
}],
"modelYears": [{
"key": "2019",
"value": "2019"
}],
"models": [{
"key": "11pro",
"value": "11 Pro"
}]
},
{
"categories": [{
"key": "smartphone",
"value": "Smartphone"
}],
"companies": [{
"key": "apple",
"value": "Apple"
}],
"brands": [{
"key": "iphone",
"value": "IPHONE"
}],
"modelYears": [{
"key": "2020",
"value": "2020"
}],
"models": [{
"key": "12",
"value": "12"
}]
}
]
}
我想要的结构是:
[
{
value: "notebook",
label: "Notebook",
children: [
{
value: "apple",
label: "Apple",
children: [
{
value: "macbook",
label: "MacBook",
children: [
{
value: "2021pro",
label: "2021 Pro",
},
{
value: "2019",
label: "2019",
},
],
},
],
},
{
value: "ibm",
label: "IBM",
children: [
{
value: "thinkpad",
label: "Thinkpad",
children: [
{
value: "e590",
label: "E590",
},
{
value: "p1",
label: "P1",
},
],
},
],
},
{
value: "lenovo",
label: "Lenovo",
children: [
{
value: "thinkpad",
label: "Thinkpad",
children: [
{
value: "e590",
label: "E590",
},
{
value: "p1",
label: "P1",
},
],
},
],
},
],
},
{
value: "Smartphone",
label: "Smartphone",
children: [
{
value: "apple",
label: "Apple",
children: [
{
value: "iphone",
label: "IPHONE",
children: [
{
value: "11pro",
label: "11 Pro",
},
{
value: "12",
label: "12",
},
],
},
],
},
],
},
];
如何做到这一点?
使用 Array.prototype.reduce / Array.prototype.map 寻找解决方案
【问题讨论】:
标签: javascript mapping reduce