将数组转换为与d3输出相同的javascript对象

时间:2019-02-14 19:10:27

标签: javascript arrays d3.js

我正在尝试将数组转换为与d3.csv(...)输出相同的对象。我有一个二维数组,如下所示;

0: {Biomass: null,Coal: null,Cogeneration: null,Gas: 42,Geothermal: null
country: "AFG"}
1: {Biomass: null,Coal: 20,Cogeneration: null,Gas: 10,Geothermal: null
country: "AOL"}
2: {Biomass: null,Coal: 10,Cogeneration: null,Gas: 30,Geothermal: null
country: "GER"}

我想要的是与d3.csv(...)相同的输出 我尝试在下面进行缩小和使用,但无法弄清楚如何将数组转换为一个对象,其输出应如下所示

{Biomass: null,Coal: null,Cogeneration: null,Gas: 42,Geothermal: null
country: "AFG"}
{Biomass: null,Coal: 20,Cogeneration: null,Gas: 10,Geothermal: null
country: "AOL"}
{Biomass: null,Coal: 10,Cogeneration: null,Gas: 30,Geothermal: null
country: "GER"}

我尝试过的代码

//output is the array
var o = {};
output.forEach((e, i) => {
   return o[i] = e;
});
console.log(o);

使用reduce只能转换第一行

 const f = output.reduce((obj, item) => {
        obj[item.id] = item
        return obj
    });
    console.log(f);

如何转换与d3.csv(...)输出相同的数组? 在数据部分页面底部,引用了我要将数组转换为data.csv的内容。

2 个答案:

答案 0 :(得分:0)

只需使用d3

const arr = [{Biomass: null, Coal: 20}, {Biomass: 1e2, Coal: 10}];
console.log(
  d3.csvFormat(arr)
);
<script src="//d3js.org/d3-dsv.v1.min.js"></script>

答案 1 :(得分:0)

如果按二维数组表示这是一个对象,其中键是整数,而值是您感兴趣的数据对象,则可以使用该对象的myObject.values()方法。或者,为了确保与旧版浏览器的兼容性,请d3.values(myObject)