如何使.data()调用此数据格式?

时间:2018-08-07 05:50:33

标签: d3.js

我现在在数组中的数据为

A=[{“id”=3, “s1”=0.3, “s2”=0.5},{“id”=6, “s1”=0.3, “s2”=0.5},{“id”=23, “s1”=0.3, “s2”=0.5},….] etc

我将其添加为:

.data(A, function(d) {return d.id})

按预期工作。

现在我想拥有一个不同的数据结构,更像是:

B={“3”:{“s1":0.3,"s2":0.5},"6":{"s1":0.3,"s2”:0.5},”23”:{“s1":0.3,"s2":0.5}}

但是我不确定如何对这种结构进行.data()调用,即如何编写提供索引的函数?

1 个答案:

答案 0 :(得分:2)

D3 data()方法仅接受三件事:

  • 数组
  • 一个功能
  • 没事

因此,您不能使用您拥有的对象(B)。您需要将其转换为数组。

例如,这是一个解决方案(很多),可以将其转换为与第一个数组(A)类似的数组:

const B = {
  "3": {
    "s1": 0.3,
    "s2": 0.5
  },
  "6": {
    "s1": 0.3,
    "s2": 0.5
  },
  "23": {
    "s1": 0.3,
    "s2": 0.5
  }
};

const data = Object.keys(B).map(function(d) {
  return Object.assign({}, B[d], {
    id: d
  })
});

console.log(data)

此处的区别在于id是字符串,而不是数字。如果您想要一个数字,只需将其强制。