javascript 将对象转换或包装为复杂 JSON 的数组

标签 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'
}
];

有没有办法始终将 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/

相关文章:

javascript - 如何在 JavaScript 中正确柯里化(Currying)一个函数?

javascript - Backbone和下划线js为什么需要使用bindAll

javascript - underscore.js 根据另一个对象过滤一个对象数组

javascript - 大数字打破 underscore.js _.contains

javascript - javascript 中的 obj.length === +obj.length

javascript - 从 Ext.tree.Panel 获取选定的条目

javascript - jquery id 选择器与变量

javascript - 如何在firebase中迭代对象的对象?

javascript - Node.js 中 require 语句后的第二组括号是什么意思?

node.js - Nodejs 渲染多个同名项目