javascript将对象转换或包装到数组中以获得复杂的JSON

Kev*_*vin 5 javascript underscore.js

我有一个看起来像这样的JSON:

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'
}
];
Run Code Online (Sandbox Code Playgroud)

有没有办法将countries.programs对象包装成一个数组,使得最终输出看起来像这样?我在underscoreJS中尝试了一些实用程序函数,但解决方案却让我望而却步.

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'
}
];
Run Code Online (Sandbox Code Playgroud)

谢谢!

Ama*_*dan 18

不是自动的,没有.然后循环通过这些国家country.program = [].concat(country.program).如果它不是一个数组,那么最后一段魔法将包装该值,如果是,则保持原样.大多.(它将是一个不同但相当的数组).

每个请求编辑:

_.each(countries, function(country) {
  country.program = [].concat(country.program);
});
Run Code Online (Sandbox Code Playgroud)

  • 这太棒了!谢谢你的澄清. (2认同)