Javascript 我可以用字典作为我的';数据';矩形的对象?

Javascript 我可以用字典作为我的';数据';矩形的对象?,javascript,d3.js,Javascript,D3.js,我想做四个宽度和高度都固定的矩形 var rects = { key1: { x: base_x, y: base_y, fullname: "Seed", cnt: 3500, row: 1 }, key2: { x: 2*base_x, y: base_y, fullname: "Series A", cnt: 4700, row: 1 }, key3: { x: 3*base_x, y: base_y, fullname: "Series B", cnt: 2300, r

我想做四个宽度和高度都固定的矩形

var rects = {
  key1:  { x: base_x, y: base_y, fullname: "Seed", cnt: 3500, row: 1 },
  key2:  { x: 2*base_x, y: base_y, fullname: "Series A", cnt: 4700, row: 1 },
  key3:  { x: 3*base_x, y: base_y, fullname: "Series B", cnt: 2300, row: 1},
  key4:  { x: 4*base_x, y: base_y, fullname: "Series C", cnt: 1750, row: 1}}
我知道如果我将
{}
替换为
[]
将其转换为数组,并且如果我去掉了键,因为数组不能有键,那么我可以使用它,那么我就可以将它们转换为矩形

var rectangles = svg.selectAll(".rect")
    .data(rects)
    .enter()
    .append("rect")
我想稍后在需要键的函数中使用
rects
对象

我想我可以用这样的东西,基于矩形创建一个数组

var rects_array = []
for (i = 0; i < d3.keys(rects).length; i++){
    rects_array.push(rects[d3.keys(rects)[i]])
}
var rects\u数组=[]
对于(i=0;i

我只是好奇我是否可以直接传入
rects
,而不是从中生成数组。

简短回答:,你不能

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

  • 阵列
  • 函数
  • 没什么
因此,不能在此处使用对象

关于上一个代码段,基于
rects
对象创建数组的最简单方法是使用:

var rects={
关键1:{
x:“福”,
y:“酒吧”,
全名:“种子”,
政务司司长:3500,
行:1
},
关键2:{
x:“福”,
y:“酒吧”,
全名:“A系列”,
政务司司长:4700,
行:1
},
关键3:{
x:“福”,
y:“酒吧”,
全名:“B系列”,
政务司司长:2300,
行:1
},
关键4:{
x:“福”,
y:“酒吧”,
全名:“C系列”,
政务司司长:1750,
行:1
}
};
console.log(Object.values(rects))