0
テンプレート作成中に、配列の値が同じかどうかを確認する方法は? 配列に重複した値がある場合、私はスキップしたいと思います。dustjs、ループ中の重複チェック
[
{name: 1},
{name: 3},
{name: 3},
{name: 4}
]
ループ上には基本的にはありません。ありがとう
テンプレート作成中に、配列の値が同じかどうかを確認する方法は? 配列に重複した値がある場合、私はスキップしたいと思います。dustjs、ループ中の重複チェック
[
{name: 1},
{name: 3},
{name: 3},
{name: 4}
]
ループ上には基本的にはありません。ありがとう
一般的に、ダストは、テンプレートのデータについての論理を保持するという考え方に従います。レンダリングする前にデータを調整する必要がある場合は、データを渡すヘルパー関数を記述できます。ここでは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}
この例では、私はフィルタリングする2つのパラメータを受け付けるコンテキストヘルパーunique
、アレイ及びフィルタリングするためのキーを定義しました。
私は_.uniqBy
を呼び出して配列をフィルタリングし、を使用して、ブロックごとにuniqueValues
のブロックを1回レンダリングします。
次に、テンプレートで、私はコンテキストヘルパー{#unique}
を呼び出し、それにパラメータを渡します。
これは素晴らしいです。私はヘルパーを実行することができたが、私はロダシを持っていない。可能であれば、あなたがvanillajsの実装を助けることができれば、それは素晴らしいことです。私は脱分化の部分に混乱しています。 – serkan
また、「エラー:ReferenceError:paramsが定義されていません」というエラーが表示されます。 – serkan
編集済み。 'chunk.section'呼び出しから' params'を削除するだけです。私はparamsを{{値、by}}に分解し、他の用途を変更するのを忘れました。 – Interrobang