0
模板化時,檢查數組是否具有相同值的方法是什麼? 如果數組有重複值,我想跳過。dustjs,循環時重複檢查
[
{name: 1},
{name: 3},
{name: 3},
{name: 4}
]
基本上模擬1,3,4循環。謝謝
模板化時,檢查數組是否具有相同值的方法是什麼? 如果數組有重複值,我想跳過。dustjs,循環時重複檢查
[
{name: 1},
{name: 3},
{name: 3},
{name: 4}
]
基本上模擬1,3,4循環。謝謝
一般來說,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}
並將其傳遞給參數。
這太好了。我能夠運行幫手,但我沒有洛達什。如果可能的話,如果你可以幫助vanillajs的實施,這將是非常好的。我對解構部分感到困惑。 – serkan
此外,我得到「錯誤:ReferenceError:params未定義」錯誤。 – serkan
已編輯;只需從'chunk.section'調用中移除'params'即可。我將參數分解成{{values,by}},並忘記改變其他用法。 – Interrobang