我是JS的新手。
我有一个地图对象。
地图{$ Central:265045,$ East:178576,$ South:103926,$ West:272264}
我想将其转换为对象数组
[{region:" Central",value:265045},{region:" East",value:178576}, {region:" South",value:103926},{region:" West",value:272264}]
答案 0 :(得分:1)
您可以使用for ... in
迭代对象的键(地图)。此外,看起来您的obejct具有以美元符号开头的属性,并且您想要的结果已被剥离。您可以使用substring
来执行此操作。
var a = [];
for (var k in map) {
a.push({region:k.substring(1), value:map[k]});
}
答案 1 :(得分:1)
使用for..in循环迭代Map对象并将项目推送到数组中。 在for..in循环内部创建一个具有属性region和value的对象,将此对象推送到数组中。
<!DOCTYPE html>
<html>
<head>
<title>For in example</title>
<script type="text/javascript">
var map = {
"$Central": 265045,
"$East" : 178576,
"$South" : 103926,
"$West" : 272264
};
var arr = [];
for (var prop in map) {
var item = {region : prop.substring(1), value:map[prop]};
arr.push(item);
}
console.log('Map Object --> ',map);
console.log('Array of objects --> ',arr);
</script>
</head>
<body>
</body>
</html>
&#13;
答案 2 :(得分:0)
您可以在forEach
Map
回调
var res = [];
map.forEach(function(val, key) {
res.push({ region: key, value: val });
});
答案 3 :(得分:0)
这应该做到:
message Request {
string mandatory_key1 = 1;
map<string, Value> mandatory_key2 = 2;
}
message Value {
repeated string value = 1;
}