【问题标题】:Convert array to object in javascript same as d3 output在 javascript 中将数组转换为对象,与 d3 输出相同
【发布时间】:2019-07-08 21:34:54
【问题描述】:

我正在尝试将数组转换为与 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 的内容的引用。

【问题讨论】:

  • 我假设你有一个对象数组,但第二个究竟是什么?它不是 js 中的有效格式
  • 第二个是我想要的 d3.csv(...) {console.log(data);} 的输出。
  • ^----- "第二个是 d3.csv(...)"的输出"...不,不是。 d3.csv 的输出是一个对象的array。 @LuisfelipeDejesusMunoz 是正确的,这不是有效的 JavaScript。简而言之,你已经有了你想要的。此外,作为解释,您在 row 函数中运行 console.log,它将被调用到 CSV 中的 每一行 ...因此控制台显示单独的对象(和 @987654328 @ 不是整个数据,而只是每一行)。

标签: javascript arrays d3.js


【解决方案1】:

只需使用 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>

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      • 2018-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多