如何对此数据格式进行.data()调用?

问题描述 投票:2回答:1

我现在在数组中有数据

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()调用。如何编写提供索引的函数?

d3.js
1个回答
2
投票

D3 data()方法只接受3件事:

  • 数组
  • 一个功能
  • 没有

因此,您不能使用该对象(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是一个字符串,而不是一个数字。如果你想要一个数字,只需要强制它。

© www.soinside.com 2019 - 2024. All rights reserved.