Javascript 如何绕过玉器缺端
有没有办法做这样的事Javascript 如何绕过玉器缺端,javascript,json,pug,Javascript,Json,Pug,有没有办法做这样的事 ul.categories - var categories = []; each ingredient in mv.data.recipe.ingredients if !categories.includes(ingredient.categoryId) - categories.push(ingredient.categoryId); li.category #{ingredient.categoryName} ul.ingredien
ul.categories
- var categories = [];
each ingredient in mv.data.recipe.ingredients
if !categories.includes(ingredient.categoryId)
- categories.push(ingredient.categoryId);
li.category #{ingredient.categoryName}
ul.ingredients
- // endif?
li.ingredient #{ingredient.number} #{ingredient.unitName} #{ingredient.name}
如果没有endif?
注释,则代码适用于每个类别中的第一个成分,因为它被if
语句捕获
那么这可以通过mixin
、extend
或类似的方法解决吗?一个endif
可以解决这个问题,但是Jade没有任何end关键字,afaik
还是我必须在我的jade文件中使用HTML
中压数据配方:
{
"id": 2,
"name": "Hellmann's hamburgare med hemmagjort br\u00f6d",
"description": "I v\u00e4rldens godaste hamburgerbr\u00f6d finns en hemlig ingrediens som ingen av dina g\u00e4ster kommer att kunna lista ut; Hellmann's majonn\u00e4s! Prova sj\u00e4lv och uppt\u00e4ck hur saftiga och l\u00e4ckra Hellmann's hamburgerbr\u00f6d blir!",
"instructions": "<p>Hamburgerbr\u00f6den:<br\/>1. S\u00e4tt ugnen p\u00e5 200 grader. Blanda j\u00e4sten och vattnet (fingervarmt). Hacka chilin. Blanda sedan i mj\u00f6l, Hellmann\u2019s majonn\u00e4s, timjan, chili, socker och ost. Kn\u00e5da degen p\u00e5 medelhastighet i 10 min, blanda sedan ner salt och blanda i ca tv\u00e5 minuter till. <br\/>2. L\u00e5t degen j\u00e4sa 20-30 min eller till dubbel storlek.<br\/>3. Forma bullar till \u00f6nskad storlek och l\u00e5t j\u00e4sa till dubbla storleken under en duk. <br\/>4. Pensla med lite mj\u00f6lk och toppa med sesamfr\u00f6n. Baka av i ca 10 min eller tills dom f\u00e5tt en fin gyllengul f\u00e4rg.<br\/><br\/>Tillbeh\u00f6r:<br\/>1. Skiva r\u00f6dl\u00f6k och tomat. St\u00e4ll fram en sk\u00e5l med Hellmann's majonn\u00e4s och ett paket med skivad cheddarost.<br\/><br\/>Hellmann's hamburgare:<br\/>1. Stoppa allt utom f\u00e4rsen (Anv\u00e4nd g\u00e4rna h\u00f6grevsf\u00e4rs f\u00f6r b\u00e4sta smakupplevelse) i en matberedare och mixa till det \u00e4r sm\u00e5 bitar kvar av allt. Blanda det med h\u00f6grevsf\u00e4rsen och forma till hamburgare. <br\/>2. Stek burgarna medium och servera med en skiva tomat, l\u00f6kringar, cheddarost och en klick majonn\u00e4s i ett Hellmann\u2019s hamburgerbr\u00f6d.<\/p>",
"src": "\/uploads\/images\/recipes\/recipe-1.jpg",
"minutes": "60",
"author": null,
"rating": "2.599999999985",
"ingredients": [
{
"id": 1,
"name": "Vatten",
"optional": 1,
"number": 4,
"unitName": "dl",
"unitMultiplier": 0.1,
"categoryId": 1,
"categoryName": "Hellmann's hamburgerbr\u00f6d"
},
{
"id": 2,
"name": "Vetemj\u00f6l",
"optional": 1,
"number": 500,
"unitName": "g",
"unitMultiplier": 1,
"categoryId": 1,
"categoryName": "Hellmann's hamburgerbr\u00f6d"
}
...snip...
]
}
{
“id”:2,
“名称”:“Hellmann's hamburgare med hemmagjort br\u00f6d”,
“描述”:“我是一位来自德国的芬兰人,我是一位来自德国的年轻人;我是赫尔曼的少校,我是一位来自德国的年轻人!”,
“说明”:“Hamburgerbr\u00f6den:1.S\u00e4tt ugnen p\u00e5 200平地机。Blanda j\u00e4sten och vattnet(fingervarmt)Hacka chilin.Blanda sedan i mj\u00f6l,Hellmann\u2019s majonn\u00e4s,timjan,chili,socker och ost.Kn\u00e5da degen p\u00e5 Medelhastightghet i 10分钟,Blanda sedan ner salt och Blanda i ca tv\u00e5分钟,直到.2.L\u00e5t degen\u00e4sa 20-30分钟,直到被称为storlek.3.bullar,直到storlek为止4.我可以用10分钟的时间在吉隆坡和切达岛上的一个农场工作。Tillbeh\u00f6r:1.Skiva r\u00f6dl\u00f6k och tomat.St\u00E4L med Hellmann's majonn\u00E4L majonn\u00e4s Ochedda.Hellmann's Allare:1tom f\u00e4rsen(Anv\u00e4nd g\u00e4rna h\u00f6grevsf\u00e4rs f\u00f6r b\u00e4sta SMAKUPLEVENSE)我在Matberedea och mixa,直到det\u00e4r sm\u00e5 bitar kvar av allt.Blanda det med h\u00f6grevsf\u00e4rsen och,直到汉堡。2.Stek burgarna中等och服务器,位于skiva tomat、l\u00f6kringar、cheddarost och en klick majonn\u00et Hellmann\u019s汉堡。”,
“src”:“\/uploads\/images\/recipes\/recipe-1.jpg”,
“分钟”:“60”,
“作者”:空,
“评级”:“2.59999985”,
“成分”:[
{
“id”:1,
“名称”:“Vatten”,
“可选”:1,
“数字”:4,
“单位名称”:“dl”,
“单位乘数”:0.1,
“类别”1,
“类别名称”:“Hellmann's hamburgerbr\u00f6d”
},
{
“id”:2,
“名称”:“Vetemj\u00f6l”,
“可选”:1,
“数字”:500,
“单位名称”:“g”,
“单位乘数”:1,
“类别”1,
“类别名称”:“Hellmann's hamburgerbr\u00f6d”
}
剪
]
}
以下是我想在HTML中实现的目标:
<ul class="categories">
<li class="category">Hellmann's hamburgerbröd
<ul class="ingredients">
<li class="ingredient">4 dl Vatten</li>
<li class="ingredient">500 g Vetemjöl</li>
<li class="ingredient">50 g Jäst</li>
<li class="ingredient">100 g Majonnäs</li>
<li class="ingredient">25 g Strösocker</li>
<li class="ingredient">10 g Salt Fint</li>
<li class="ingredient">50 g Riven Ost</li>
<li class="ingredient">2 msk Timjan</li>
<li class="ingredient">1 msk Chilipeppar Röd</li>
<li class="ingredient">0.5 dl Sesamfrö</li>
<li class="ingredient">1 dl Mjölk</li>
</ul>
</li>
<li class="category">Hellmann's hamburgare
<ul class="ingredients">
<li class="ingredient">1 st Gul lök</li>
<li class="ingredient">250 g Bacon Skivat</li>
<li class="ingredient">3 klyftor Vitlök</li>
<li class="ingredient">1 msk Oxfond Buljong</li>
<li class="ingredient">1.5 msk Rökt paprikapulver</li>
<li class="ingredient">1 kg Köttfärs - Nöt</li>
</ul>
</li>
<li class="category">Tillbehör
<ul class="ingredients">
<li class="ingredient">2 st Rödlök</li>
<li class="ingredient">200 g Cheddarost i Skivor</li>
<li class="ingredient">2 st Tomater</li>
<li class="ingredient">100 g Majonnäs</li>
</ul>
</li>
</ul>
赫尔曼汉堡酒店
- 4分升瓦滕
- 500克维特姆焦耳
- 50克杰斯特
- 100克马约诺
- 25克粗棉布
- 10克盐末
- 50克每升
- 2 msk Timjan
- 1 msk Chilipeppar Röd
- 0.5分升
- 1毫升美赞臣
赫尔曼汉堡
第一古尔洛克
250克培根煎锅
- 3克立弗·维特尔克
- 1 msk Oxfond Buljong
- 1.5msk Rökt辣椒粉
- 1千克克特福
蒂尔贝赫尔
- 2圣罗德里克
- 200克切达罗斯i斯奇沃
第二汤姆计
- 100克马约诺
如上的第一个示例所示,不需要“endif”,因为控制流(至少部分)由缩进表示
所以只要把缩进的部分拉进去就行了。这里有一种方法,不那么优雅;但现在必须这样做。我将把这个问题留待几天,以防有人有更好的方法来解决这个问题。或者如果我自己找到更好的解决方案
ul.categories
- var categories = [];
each ingredient in mv.data.recipe.ingredients
if !categories.includes(ingredient.categoryId)
if categories.length > 0
</ul></li>
- categories.push(ingredient.categoryId);
<li class="category">#{ingredient.categoryName}<ul class="ingredients">
li.ingredient #{ingredient.number} #{ingredient.unitName} #{ingredient.name}
</ul></li>
ul.categories
-var类别=[];
mv.data.recipe.Components中的每种成分
如果类别。包括(成分。类别ID)
如果categories.length>0
-类别.推送(成分.类别ID);
{component.categoryName}
li.component{component.number}{component.unitName}{component.name}
编辑:完全重写,因为我误解了最初发布的问题
在Jade之前执行分组
var categories = {};
mv.data.recipe.ingredients.forEach(function(ingredient) {
if (!categories[ingredient.categoryName]) {
categories[ingredient.categoryName] = [];
}
categories[ingredient.categoryName].push(ingredient);
});
然后将类别
交给Jade。从那里很容易:
ul.categories
each categoryName, ingredients in categories
li.category #{categoryName}
ul.ingredients
each ingredient in ingredients
li.ingredient #{ingredient.number} #{ingredient.unitName} #{ingredient.name}
(这是一种快捷方式,假设没有两个类别具有相同的名称;如果不是这样,您可能希望有一个对象
categories
,将ID映射到类别名称,另一个对象categoringedints
,将类别ID映射到如上所述的成分数组。逻辑并不复杂。)我不认识Jade的可能复制品,但你能不能把缩进的部分拉回来?就像@LightnessRacesinOrbit上的第一个例子,但是li
不会是