Javascript 使用lodash显示嵌套json的所有值
我试图用lodash显示JSON的所有值,我读到它最适合这样的情况,JSON很深,你可以看到,有些类别是空的,这让我更具挑战性,我想知道哪个函数最适合显示这种非结构化和深JSON。是foreach还是filter?洛达斯是这里最好的选择吗?数据最终将显示在react应用程序中,但目前我正在尝试进行映射/foreach/filter或任何可以动态遍历所有项目的操作 预期输出为嵌套树中的列表项<李>Javascript 使用lodash显示嵌套json的所有值,javascript,json,ecmascript-6,foreach,mapping,Javascript,Json,Ecmascript 6,Foreach,Mapping,我试图用lodash显示JSON的所有值,我读到它最适合这样的情况,JSON很深,你可以看到,有些类别是空的,这让我更具挑战性,我想知道哪个函数最适合显示这种非结构化和深JSON。是foreach还是filter?洛达斯是这里最好的选择吗?数据最终将显示在react应用程序中,但目前我正在尝试进行映射/foreach/filter或任何可以动态遍历所有项目的操作 预期输出为嵌套树中的列表项 { "name": "Menu", "children": [ { "typ
{
"name": "Menu",
"children": [
{
"type": "category",
"name": "Burgers",
"children": [
{
"type": "item",
"name": "Burger 1",
"children": [
{
"type": "modifier",
"name": "Promo",
"children": [
{
"type": "item",
"name": "Promo 1"
}
]
},
{
"type": "group",
"name": "Drinks",
"children": [
{
"type": "item",
"name": "Coke"
},
{
"type": "item",
"name": "Light Coke"
},
{
"type": "item",
"name": "Sprite"
},
{
"type": "item",
"name": "Fanta"
}
]
},
{
"type": "modifier",
"name": "Without",
"children": [
{
"type": "ingredient",
"name": "Onion"
},
{
"type": "ingredient",
"name": "Tomato"
},
{
"type": "ingredient",
"name": "Pickles"
}
]
}
]
},
{
"type": "item",
"name": "Burger 2",
"children": [
{
"type": "modifier",
"name": "Promo",
"children": [
{
"type": "item",
"name": "Promo 1"
}
]
},
{
"type": "group",
"name": "Drinks",
"children": [
{
"type": "item",
"name": "Coke"
},
{
"type": "item",
"name": "Light Coke"
},
{
"type": "item",
"name": "Sprite"
},
{
"type": "item",
"name": "Fanta"
}
]
},
{
"type": "modifier",
"name": "Without",
"children": [
{
"type": "ingredient",
"name": "Onion"
},
{
"type": "ingredient",
"name": "Tomato"
},
{
"type": "ingredient",
"name": "Pickles"
}
]
}
]
},
{
"type": "item",
"name": "Coming Soon Offers"
}
]
},
{
"type": "category",
"name": "Pizzas",
"children": [
{
"type": "item",
"name": "Pizza 1",
"children": [
{
"type": "modifier",
"name": "Promo",
"children": [
{
"type": "item",
"name": "Promo 1"
}
]
},
{
"type": "group",
"name": "Drinks",
"children": [
{
"type": "item",
"name": "Coke"
},
{
"type": "item",
"name": "Light Coke"
},
{
"type": "item",
"name": "Sprite"
},
{
"type": "item",
"name": "Fanta"
}
]
},
{
"type": "modifier",
"name": "Without",
"children": [
{
"type": "ingredient",
"name": "Onion"
},
{
"type": "ingredient",
"name": "Mashrooms"
},
{
"type": "ingredient",
"name": "Olives"
}
]
}
]
},
{
"type": "item",
"name": "Pizza 2",
"children": [
{
"type": "modifier",
"name": "Promo",
"children": [
{
"type": "item",
"name": "Promo 1"
}
]
},
{
"type": "group",
"name": "Drinks",
"children": [
{
"type": "item",
"name": "Coke"
},
{
"type": "item",
"name": "Light Coke"
},
{
"type": "item",
"name": "Sprite"
},
{
"type": "item",
"name": "Fanta"
}
]
},
{
"type": "modifier",
"name": "Without",
"children": [
{
"type": "ingredient",
"name": "Onion"
},
{
"type": "ingredient",
"name": "Mashrooms"
},
{
"type": "ingredient",
"name": "Olives"
}
]
}
]
}
]
}
]
}
这是一条没有洛达斯的路
const buildMenu=(数据)=>{
设ul=document.createElement('ul');
data.children.forEach(i=>{
设li=document.createElement('li');
li.innerText=i.name;
li.className=i.type;
if(i.children)li.appendChild(buildMenu(i));
ul.儿童(li);
});
返回ul;
};
让数据={
“名称”:“菜单”,
“儿童”:[{
“类型”:“类别”,
“名称”:“汉堡”,
“儿童”:[{
“类型”:“项目”,
“名称”:“汉堡1”,
“儿童”:[{
“类型”:“修饰符”,
“名称”:“宣传片”,
“儿童”:[{
“类型”:“项目”,
“名称”:“促销1”
}]
},
{
“类型”:“组”,
“姓名”:“饮料”,
“儿童”:[{
“类型”:“项目”,
“名称”:“可口可乐”
},
{
“类型”:“项目”,
“名称”:“轻焦”
},
{
“类型”:“项目”,
“名称”:“精灵”
},
{
“类型”:“项目”,
“名称”:“芬达”
}
]
},
{
“类型”:“修饰符”,
“名称”:“无”,
“儿童”:[{
“类型”:“成分”,
“名称”:“洋葱”
},
{
“类型”:“成分”,
“名称”:“西红柿”
},
{
“类型”:“成分”,
“名称”:“泡菜”
}
]
}
]
},
{
“类型”:“项目”,
“名称”:“汉堡2”,
“儿童”:[{
“类型”:“修饰符”,
“名称”:“宣传片”,
“儿童”:[{
“类型”:“项目”,
“名称”:“促销1”
}]
},
{
“类型”:“组”,
“姓名”:“饮料”,
“儿童”:[{
“类型”:“项目”,
“名称”:“可口可乐”
},
{
“类型”:“项目”,
“名称”:“轻焦”
},
{
“类型”:“项目”,
“名称”:“精灵”
},
{
“类型”:“项目”,
“名称”:“芬达”
}
]
},
{
“类型”:“修饰符”,
“名称”:“无”,
“儿童”:[{
“类型”:“成分”,
“名称”:“洋葱”
},
{
“类型”:“成分”,
“名称”:“西红柿”
},
{
“类型”:“成分”,
“名称”:“泡菜”
}
]
}
]
},
{
“类型”:“项目”,
“名称”:“即将推出的优惠”
}
]
},
{
“类型”:“类别”,
“名称”:“比萨”,
“儿童”:[{
“类型”:“项目”,
“名称”:“披萨1”,
“儿童”:[{
“类型”:“修饰符”,
“名称”:“宣传片”,
“儿童”:[{
“类型”:“项目”,
“名称”:“促销1”
}]
},
{
“类型”:“组”,
“姓名”:“饮料”,
“儿童”:[{
“类型”:“项目”,
“名称”:“可口可乐”
},
{
“类型”:“项目”,
“名称”:“轻焦”
},
{
“类型”:“项目”,
“名称”:“精灵”
},
{
“类型”:“项目”,
“名称”:“芬达”
}
]
},
{
“类型”:“修饰符”,
“名称”:“无”,
“儿童”:[{
“类型”:“成分”,
“名称”:“洋葱”
},
{
“类型”:“成分”,
“名称”:“Mashrooms”
},
{
“类型”:“成分”,
“名称”:“橄榄”
}
]
}
]
},
{
“类型”:“项目”,
“名称”:“披萨2”,
“儿童”:[{
“类型”:“修饰符”,
“名称”:“宣传片”,
“儿童”:[{
“类型”:“项目”,
“名称”:“促销1”
}]
},
{
“类型”:“组”,
“姓名”:“饮料”,
“儿童”:[{
“类型”:“项目”,
“名称”:“可口可乐”
},
{
“类型”:“项目”,
“名称”:“轻焦”
},
{
“类型”:“项目”,
“名称”:“精灵”
},
{
“类型”:“项目”,
“名称”:“芬达”