I'm trying to display an array of items with Mustache, and I'd like to show them with a comma separator.
Here is my object :
{"items": [
{"display": "Item 1"},
{"display": "Item 2"},
{"display": "Item 3"},
{"display": "Item 4"}
]}
And here's my Mustache JS template :
{{#items}}{{display}}, {{/items}}
Unfortunately, this will render as :
Item 1, Item 2, Item 3, Item 4,
I'd like to remove the last ", ", since it seems odd visually.
I tried with functions, but I got the "{{items}}" text, not the array items
.
How can I do this?
You could use a Mustache function. These are defined in your template like any other section, then run on the content they're wrapped around. For your case it would look something like this:
{
"items": [
{"display": "Item 1"},
{"display": "Item 2"},
{"display": "Item 3"},
{"display": "Item 4"}
],
"trim": function () {
return function (text, render) {
return render(text).replace(/(,\s*$)/g, ''); // trim trailing comma and whitespace
}
}
}
Then your Mustache markup will look like this:
{{#trim}}{{#items}}{{display}}, {{/items}}{{/trim}}
And your output will be what you're after:
Item 1, Item 2, Item 3, Item 4
Check it out on jsfiddle.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With