将对象数组转换为Google图表的数组

时间:2018-10-02 11:14:06

标签: javascript arrays

我有一个对象数组:

    [
      {
      SalePrice:"18000",
      TotalValue:"22500"
      ratio:1.25
      }
      {
      SalePrice:"128000",
      TotalValue:"212500"
      ratio:1.05
      }
    ]

,我想将其形成一个数组。喜欢:

[
        [18000,  22500, 1.25],
        [128000,  212500, 1.05]
]

使用JS(可以使用ES6)。我试过使用类似的东西:

let array = data.map(({SalePrice, TotalValue, ratio}) => SalePrice, TotalValue, ratio).filter(s => s, t = >t, r => r);

但这不起作用,任何人都可以启发我吗?

4 个答案:

答案 0 :(得分:3)

也许类似于以下内容:

const data = [{SalePrice:"18000",TotalValue:"22500",ratio:1.25},{SalePrice: "128000",TotalValue:"212500",ratio:1.05}]
const mappedToArray = data.map(d => Array.from(Object.values(d)))
//[["18000", "22500", 1.25],["128000", "212500", 1.05]]

这种方法的优点是不必依靠硬编码键来访问对象中其他答案确实需要的属性。如果它包含Google Charts不需要的属性,那么它本身也可能是一个缺点。

答案 1 :(得分:1)

let objectArray = ...;
let container = [];

objectArray.forEach(e => container.push([e.SalePrice, e.TotalValue, e.ratio]));

答案 2 :(得分:0)

使用数组映射:

var obj = [
    {
      SalePrice:"18000",
      TotalValue:"22500",
      ratio:1.25
    },
    {
      SalePrice:"128000",
      TotalValue:"212500",
      ratio:1.05
    }
  ];
var result = obj.map(current=>{
  return [Number(current.SalePrice), Number(current.TotalValue), current.ratio];
});
console.log(result);

答案 3 :(得分:-1)

请检查我的代码并为您推荐:

script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-json/2.5.1/jquery.json.min.js"></script>
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        ${devicegroupusers}
        <c:url value="${UrlRequestMappingConstants.DASHBOARD_DEVICEGROUP_USERS}" var="formUrl"/>

          <script type="text/javascript">
              google.load("visualization", "1", {packages:["corechart"]});
              google.setOnLoadCallback(drawChart);
              function drawChart(devicegroupusers) {

                  var a = devicegroupusers, result = [];

                a = JSON.parse(a);

                for (var o = 0; o < a.length; o++) {
                    for (var p in a[o]) {
                        result.push([p, a[o][p]]);
                    }
                };

                console.log(result);

                  var data = google.visualization.arrayToDataTable(result);

                var options = {
                  title: 'My Daily Activities'
                };

                var chart = new google.visualization.BarChart(document.getElementById('piechart'));

                chart.draw(data, options);
              }
            </script>
          <div id="piechart" style="width: 900px; height: 500px;"></div>

devicegroupusers包含这样的JSON

[{“ name”:“默认”,“ count”:2},{“ name”:“ IT”,“ count”:1},{“ name”:“ R \ u0026D”,“ count” :1}]

如何将其转换为以下示例以绘制条形图?

  

['name','count'],['Default',2],['IT',3],[R \ u0026D',1],

要找到答案,我做了:

var devicegroupusers = '[{"name":"Default","count":2},{"name":"IT","count":1},{"name":"R\u0026D","count":1}]', 
  result = [["name","count"]],
  devicegroupusers = JSON.parse(devicegroupusers);

$.each(devicegroupusers ,function(_,devicegroupuser) {
  result.push(
    [
      devicegroupuser["name"],devicegroupuser["count"]
    ]
  );
});
console.log(result);

我的jquery库在哪里:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

请检查我的示例,并将您的JSON数据转换为Google图表数据表