Dust.js 不要在循环中的空值后添加分隔符

Dust.js do not add separator after empty values in loop

我有一组值,例如:

 {
  "languages": [
    "",
    "CSS",
    "HTML",
    "",
    "JavaScript",
    "Dust",
    "",
    ""
  ]
}

预期输出:

CSS, HTML, JavaScript, Dust

是否可以在不创建自定义助手的情况下不在我的 dust 模板中的空值后添加分隔符?问题是数组可以有任意长度和任意数量的空值。

只使用内置的帮助程序就可以编写

{#languages}
  {@ne key=. value=""}{.}{@sep}, {/sep}{/ne}
{/languages}

但是,如果数组中的最后一项是空白,这将留下悬空的逗号。如果你能找到数组中的第一个非空白项并传递该数据,请尝试这个相当丑陋的版本:

{#languages}
  {@ne key=. value=""}{@sep}{@ne key=$idx value=firstNonBlankItem}, {/ne}{/sep}{.}{/ne}
{/languages}

如果 firstNonBlankItem 设置为正确的索引(上面示例中的 1),您会得到想要的。

否则,您真的应该编写一个自定义助手——这就是 Dust 想要您做的。您甚至不需要在上下文中包含助手;相反,您可以编写自定义全局帮助器并将其包含在 Javascript.