Arrays 使用d3获取数组长度

Arrays 使用d3获取数组长度,arrays,d3.js,Arrays,D3.js,返回数组长度时遇到问题。我有一个数组,如下所示: var colorsquares = [ [3.3, 28, -1.5, 13, 857, 3, 5, 6, 7, 5, ["#b2dbbb","#d2e6c1"]], [1.3, 18, -1.5, 13, 857, 3, 5, 6, 7, 5, ["#c2dccc","#d2fdc1"]] ]; 我用最后的值给div上色 d3.select("#

返回数组长度时遇到问题。我有一个数组,如下所示:

var colorsquares = [
                [3.3, 28, -1.5, 13, 857, 3, 5, 6, 7, 5, ["#b2dbbb","#d2e6c1"]],
                [1.3, 18, -1.5, 13, 857, 3, 5, 6, 7, 5, ["#c2dccc","#d2fdc1"]]
                ];
我用最后的值给div上色

d3.select("#colorBox")
          .selectAll("div")
          .data(d[10])
          .enter()
          .append("div")
          .style("background-color", function(d) { 
               return d; 
           })
           .style("width", function(d) { 
               return (d.length + 1) + "px"; 
           })
           ;

颜色出来的权利,但我没有得到我想要的宽度。我得到的不是2,而是8

在D3样式功能中:

.style("width", function(d) { 
    return (d.length + 1) + "px"; 
})
,第一个参数(您称之为
d
)表示单个数组元素,例如
“#b2dbbb”
“#d2e6c1”
。D3将第一个数组元素(
“#b2dbbb”
)传递给第一个
div
,第二个(
“#d2e6c1”
)传递给第二个
div
,依此类推。因此,当您要求
d.length+1
时,您要求的是字符串
“#b2dbbb”
+1的长度,实际上是8

我认为您的困惑是因为您使用名称
d
有两个不同的目的,一个是隐藏另一个。您可以使用它作为函数中的参数,但也可以作为对
colorsquares[0]
colorsquares[1]
的引用(这些是在某种循环还是什么?我不能更具体,因为您还没有发布所有代码)。

例如,将外部的
d
(您在说
.data(d[10])
时所指的那一个)更改为
dd
(或更好的名称,理想情况下)。然后,在背景色函数中,您可以说

return d
但是在宽度函数中,我认为您正在寻找

return (dd[10].length + 1) + "px";

在D3样式功能中:

.style("width", function(d) { 
    return (d.length + 1) + "px"; 
})
,第一个参数(您称之为
d
)表示单个数组元素,例如
“#b2dbbb”
“#d2e6c1”
。D3将第一个数组元素(
“#b2dbbb”
)传递给第一个
div
,第二个(
“#d2e6c1”
)传递给第二个
div
,依此类推。因此,当您要求
d.length+1
时,您要求的是字符串
“#b2dbbb”
+1的长度,实际上是8

我认为您的困惑是因为您使用名称
d
有两个不同的目的,一个是隐藏另一个。您可以使用它作为函数中的参数,但也可以作为对
colorsquares[0]
colorsquares[1]
的引用(这些是在某种循环还是什么?我不能更具体,因为您还没有发布所有代码)。

例如,将外部的
d
(您在说
.data(d[10])
时所指的那一个)更改为
dd
(或更好的名称,理想情况下)。然后,在背景色函数中,您可以说

return d
但是在宽度函数中,我认为您正在寻找

return (dd[10].length + 1) + "px";
另外,作为一个可能的提示(可能与您的案例相关,也可能与您的案例无关,但我会在案例中给出),您是否考虑过使用对象而不是数组?i、 e.
{半径:3.3,位置:28,任意值:357,…,颜色:[“#b2dbbb”,“#d2e6c1”]}
。这样,您可以获得更大的灵活性和可靠性:
dd.colors
dd[10]
更容易理解,更不容易损坏。。。!!另外,作为一个可能的提示(可能与您的案例相关,也可能与您的案例无关,但我会在案例中给出),您是否考虑过使用对象而不是数组?i、 e.
{半径:3.3,位置:28,任意值:357,…,颜色:[“#b2dbbb”,“#d2e6c1”]}
。这样,您可以获得更大的灵活性和可靠性:
dd.colors
dd[10]
更容易理解,更不容易损坏。。。!!