将地图对象转换为Java脚本中的对象数组

时间:2017-02-13 04:50:40

标签: javascript d3.js

我是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}]

4 个答案:

答案 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;
&#13;
&#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;
}