鑒于我有這樣的物件
const data = {
_id: "62bac5af6b6581786cb192e4",
name: "components",
subCategories: [
{
_id: "62bac9a24bd73045dcb563d7",
name: "RAM",
subCategories: [
{
_id: "62bc21152fde7012505b93a4",
name: "SRAM",
subCategories: [],
},
{
_id: "62bc220ff4b1a343a4d2ec9d",
name: "DRAM",
subCategories: [],
},
],
},
{
_id: "62baca1a1ffdc142085bca80",
name: "Motherboard",
subCategories: [
{
_id: "62baca1a1ffdc142085bca82",
name: "AT",
subCategories: [],
},
{
_id: "62baca1a1ffdc142085bca83",
name: "ATX",
subCategories: [],
},
],
},
],
};
我想創建一個看起來像這樣的全新物件
const data = {
value: "62bac5af6b6581786cb192e4",
title: "components",
children: [
{
value: "62bac9a24bd73045dcb563d7",
title: "RAM",
children: [
{
value: "62bc21152fde7012505b93a4",
title: "SRAM",
children: [],
},
{
value: "62bc220ff4b1a343a4d2ec9d",
title: "DRAM",
children: [],
},
],
},
{
value: "62baca1a1ffdc142085bca80",
title: "Motherboard",
children: [
{
value: "62baca1a1ffdc142085bca82",
title: "AT",
children: [],
},
{
value: "62baca1a1ffdc142085bca83",
title: "ATX",
children: [],
},
],
},
],
};
所以我的邏輯是遍歷所有子類別并將其作為子類別插入。以下是我嘗試過的
const iterate = (data) => {
let result = {
title: data.name,
value: data._id,
children: [],
};
function loop(data, result) {
for (const category of data) {
let subItem = {
title: category.name,
value: category._id,
children: [],
};
result.children.push(subItem);
if (category.subCategories) {
loop(category.subCategories, result);
}
}
}
loop(data.subCategories, result);
return result;
};
const res = iterate(data);
console.log(res);
我最終得到了這樣的東西
{
"title": "components",
"value": "62bac5af6b6581786cb192e4",
"children": [
{
"title": "RAM",
"value": "62bac9a24bd73045dcb563d7",
"children": []
},
{
"title": "SRAM",
"value": "62bc21152fde7012505b93a4",
"children": []
},
{
"title": "DRAM",
"value": "62bc220ff4b1a343a4d2ec9d",
"children": []
},
{
"title": "Motherboard",
"value": "62baca1a1ffdc142085bca80",
"children": []
},
{
"title": "AT",
"value": "62baca1a1ffdc142085bca82",
"children": []
},
{
"title": "ATX",
"value": "62baca1a1ffdc142085bca83",
"children": []
}
]
}
有點卡在這里,非常感謝提供的所有幫助,謝謝。
uj5u.com熱心網友回復:
你可以試試這個:
const transform = (data) => {
const result = {
title: data.name,
value: data._id,
children: data.subCategories.map(transform),
};
return result;
}
const newData = transform(data);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/498199.html
標籤:javascript 算法 递归 嵌套的