【发布时间】:2021-02-06 01:27:42
【问题描述】:
我正在尝试获取我的对象的键并创建一个 optgroup(如果它包含子项),然后创建 optgroup 的子项选项。如果一个孩子也是一个对象,那么我想在父 optgroup 中嵌套另一个 optgroup。下面是我的对象 myTypes
let myTypes = {
women:
{
tops:
{
poloshirts:"polo shirts",
tshirts: "t-shirts",
buttondown: "button down",
longsleeve:"long sleeve",
vneck:"vneck",
tanktop:"tanktop",
blouse:"blouse",
croptop:"croptop",
drifit: "dri-fit",
dressshirt:"dress shirt"
},
bottoms:
{
shorts:"shorts",
jeans:"jeans",
joggers:"joggers",
skirts:"skirts",
dresspants:"dresspants",
leggings:"leggings"
},
shoes:
{
boots:"boots",
sneakers: "sneakers",
sandals:"sandals",
flats:"flats",
heels:"heels"
},
jewelry:
{
rings: "rings",
bracelets:"bracelets",
necklaces: "necklaces",
anklets: "anklets"
},
sweaters: "sweaters",
sweatshirts: "sweatshirts",
hoodies: "hoodies",
dresses:
{
sundress: "sundress",
short: "short",
long: "long",
maxidress: "maxidress"
},
accessories:
{
watches:"watches",
glasses:
{
sunglasses: "sunglasses",
reading:"reading"
},
wallets: "wallets",
keychains: "keychains",
lanyards:"lanyards",
belts:"belts",
purses:"purses"
}
},
men:
{
tops:
{
poloshirts:"polo shirts",
tshirts: "t-shirts",
buttondown: "button down",
longsleeve:"long sleeve",
vneck:"vneck",
tanktop:"tanktop",
drifit: "dri-fit",
dressshirt: "dress shirt"
},
bottoms:
{
shorts:"shorts",
jeans:"jeans",
joggers:"joggers",
dresspants:"dress pants",
leggings:"leggings"
},
shoes:
{
boots:"boots",
sneakers: "sneakers",
sandals:"sandals",
flats:"flats"
},
jewelry:
{
rings: "rings",
bracelets:"bracelets",
necklaces: "necklaces",
anklets: "anklets"
},
sweaters: "sweaters",
sweatshirts: "sweatshirts",
hoodies: "hoodies",
accessories:
{
watches:"watches",
glasses:
{
sunglasses: "sunglasses",
reading:"reading"
},
wallets: "wallets",
keychains: "keychains",
lanyards:"lanyards",
belts:"belts"
}
},
kids:
{
girl:
{
tops:
{
poloshirts:"polo shirts",
tshirts: "t-shirts",
buttondown: "button down",
longsleeve:"long sleeve",
vneck:"vneck",
tanktop:"tanktop",
blouse:"blouse",
croptop:"croptop",
drifit: "dri-fit",
dressshirt:"dress shirt"
},
bottoms:
{
shorts:"shorts",
jeans:"jeans",
joggers:"joggers",
skirts:"skirts",
dresspants:"dresspants",
leggings:"leggings"
},
shoes:
{
boots:"boots",
sneakers: "sneakers",
sandals:"sandals",
flats:"flats",
heels:"heels"
},
jewelry:
{
rings: "rings",
bracelets:"bracelets",
necklaces: "necklaces",
anklets: "anklets"
},
sweaters: "sweaters",
sweatshirts: "sweatshirts",
hoodies: "hoodies",
dresses:
{
sundress: "sundress",
short: "short",
long: "long",
maxidress: "maxidress"
},
accessories:
{
watches:"watches",
glasses:
{
sunglasses: "sunglasses",
reading:"reading"
},
wallets: "wallets",
keychains: "keychains",
lanyards:"lanyards",
belts:"belts",
purses:"purses"
}
},
boy:
{
tops:
{
poloshirts:"polo shirts",
tshirts: "t-shirts",
buttondown: "button down",
longsleeve:"long sleeve",
vneck:"vneck",
tanktop:"tanktop",
drifit: "dri-fit",
dressshirt: "dress shirt"
},
bottoms:
{
shorts:"shorts",
jeans:"jeans",
joggers:"joggers",
dresspants:"dress pants",
leggings:"leggings"
},
shoes:
{
boots:"boots",
sneakers: "sneakers",
sandals:"sandals",
flats:"flats"
},
jewelry:
{
rings: "rings",
bracelets:"bracelets",
necklaces: "necklaces",
anklets: "anklets"
},
sweaters: "sweaters",
sweatshirts: "sweatshirts",
hoodies: "hoodies",
accessories:
{
watches:"watches",
glasses:
{
sunglasses: "sunglasses",
reading:"reading"
},
wallets: "wallets",
keychains: "keychains",
lanyards:"lanyards",
belts:"belts"
}
}
}
}
我尝试遍历此内容,然后使用适当的选项生成 html 选择,但我无法弄清楚。我得到的最远的是这个
let selectionHTML = "";
let paths = (arr)=>{
for(let i in arr){
if(typeof arr[i] == "object" && arr[i] !== null){
selectionHTML += "<optgroup label = '" + i + "'></optgroup>";
paths(arr[i]);
}
}
}
paths(myTypes);
我不知道如何生成我的代码。
【问题讨论】:
标签: javascript html recursion nested javascript-objects