dustjs,循环时复制检查

时间:2017-06-15 19:59:21

标签: dust.js

在模板化时,检查数组是否具有相同值的方法是什么? 如果数组有重复值,我想跳过。

[
  {name: 1},
  {name: 3},
  {name: 3},
  {name: 4}
]

基本上在循环中输出1,3,4。感谢

1 个答案:

答案 0 :(得分:1)

一般来说,Dust遵循一种理念,即您应该从模板中保留有关数据的逻辑。如果需要在渲染数据之前调整数据,可以编写辅助函数来传递数据。以下是使用Lodash uniqBy执行此操作的示例。

<强>上下文

{
  yourArray: [{name: 1}, {name: 3}, {name: 3}, {name: 4}],
  unique: function(chunk, context, bodies, {values, by}) {
    const uniqueValues = _.uniqBy(values, by);
    return chunk.section(uniqueValues, context, bodies);
  }
}

<强>模板

{#unique values=yourArray by="name"}
  {name}{~n}
{/unique}

在这个例子中,我定义了一个上下文帮助器unique,它接受​​两个参数,一个要过滤的数组和一个过滤的键。

我致电_.uniqBy过滤数组,然后使用chunk.sectionuniqueValues中的每个值渲染一次。

然后,在模板中,我调用我的上下文帮助器{#unique}并将参数传递给它。