javascript convert or wrap object into array for complex JSON
javascript, underscore.js
Solution
Not automatic, no. Loop through the countries, then `country.program = [].concat(country.program)`. This last piece of magic will wrap the value if it is not an array, and leave it as-is if it is. Mostly. (It will be a different, but equivalent array).
EDIT per request:
_.each(countries, function(country) {
country.program = [].concat(country.program);
});
Problem
I have a JSON that looks something like this: ``` var countries = [ { name: 'united states', program: { name: 'usprogram' } }, { name: 'mexico', program: { name: 'mexico program' } }, { name: 'panama', program: [ { name: 'panama program1' }, { name: 'panama program2' } ] }, { name: 'canada' } ]; ``` Is there a way to ALWAYS wrap the `countries.programs` object into an array such that the final output looks something like this? I tried some of the utility functions in underscoreJS, but the solution has eluded me. ``` var countries = [ { name: 'united states', program: [ //need to wrap this object into an array { name: 'usprogram' } ] }, { name: 'mexico', program: [ //need to wrap this object into an array { name: 'mexico program' } ] }, { name: 'panama', program: [ { name: 'panama program1' }, { name: 'panama program2' } ] }, { name: 'canada' } ]; ``` Thanks!