我有一个看起来像这样的 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'
}
];
有没有办法始终将 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'
}
];
谢谢!
最佳答案
不是自动的,不是。循环遍历国家,然后是 country.program = [].concat(country.program)
。如果值不是数组,这最后的魔法将包装值,如果是,则保持原样。大多。 (这将是一个不同但等效的数组)。
根据请求编辑:
_.each(countries, function(country) {
country.program = [].concat(country.program);
});
关于javascript 将对象转换或包装为复杂 JSON 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13812344/