在模板化时,检查数组是否具有相同值的方法是什么? 如果数组有重复值,我想跳过。
[
{name: 1},
{name: 3},
{name: 3},
{name: 4}
]
基本上在循环中输出1,3,4。感谢
答案 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.section
为uniqueValues
中的每个值渲染一次。
然后,在模板中,我调用我的上下文帮助器{#unique}
并将参数传递给它。