javascript – 将哈希映射转换为数组

我需要转换哈希图

{ 
    "fruit" : ["mango","orange"],
    "veg"   : ["carrot"]
} 

[ 
  { "type" : "fruit" , "name" : ["mango","orange"] } ,
  { "type" : "veg" ,   "name" : ["carrot"] } 
]

我怎么做??

最佳答案
你可以这样做(在一个工作的片段):

var input = { 
    "fruit" : ["mango","orange"],
    "veg"   : ["carrot"]
} 

var output = [], item;

for (var type in input) {
    item = {};
    item.type = type;
    item.name = input[type];
    output.push(item);
}

// display result
document.write(JSON.stringify(output));

或者,如果您或其他人已经使用可枚举的属性扩展了Object原型(我认为这是个坏习惯),那么可以使用它来保护:

var input = { 
    "fruit" : ["mango","orange"],
    "veg"   : ["carrot"]
} 

var output = [], item;

for (var type in input) {
    if (input.hasOwnProperty(type)) {
        item = {};
        item.type = type;
        item.name = input[type];
        output.push(item);
    }
}

// display result
document.write(JSON.stringify(output));

并且,使用一些更现代的功能:

var input = { 
    "fruit" : ["mango","orange"],
    "veg"   : ["carrot"]
};

var output = Object.keys(input).map(function(key) {
   return {type: key, name: input[key]};
});

// display the result
document.write(JSON.stringify(output));

转载注明原文:javascript – 将哈希映射转换为数组 - 代码日志