I have a following array:
"cast": [
{
"name": "James Stewart"
},
{
"name": "Kim Novak"
},
{
"name": "Barbara Bel Geddes"
},
{
"name": "Tom Helmore"
}
]
What is the neat in AngularJS to to format it as:
James Stewart, Kim Novak, Barbara Bel Geddes, Tom Helmore
Is there a way to use filter
or formatter
so that I can neatly do it in template like:
<font class="authors-string">{{ object.cast | filter/formatter/? }}</font>
I think writing logic for this simple parsing in controller would clutter controller body.
Thanks for your interest.
This is a filter that extracts a certain prop from each array element, then joins them using a separator (demo):
app.filter('join', function () {
return function join(array, separator, prop) {
if (!Array.isArray(array)) {
return array; // if not array return original - can also throw error
}
return (!angular.isUndefined(prop) ? array.map(function (item) {
return item[prop];
}) : array).join(separator);
};
});
Usage:
<p class="authors-string">{{ cast | join:', ':'name' }}</p>
If it is a flat array, you drop the 3rd parameter:
<p class="authors-string">{{ animals | join:', ' }}</p>
You can use 'ng-repeat' - https://docs.angularjs.org/api/ng/directive/ngRepeat
An example would be:
<div ng-repeat="(key, value) in myObj"> ... </div>
To add a comma on all but the last value:
<div ng-repeat="(key, value) in myObj"> ... <span ng-if="!$last">, </span></div>
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