それを行う標準的な方法は次のとおりです。
var data = [['apples','red'], ["oranges", "orange"], ["bananas", "yellow"]];
d3.select("body").selectAll("div.outer")
.data(data) // data is array with length 3
.enter().append("div") // will append 3 divs
.attr("class", "outer")
.selectAll("div.inner")
.data(function(d) { return d; })
.enter().append("div")
.attr("class", "inner")
.text(function(d) { return d; });
作業フィドルを参照してください:http://jsfiddle.net/YaAkv/
試したコードにはかなりの問題があります。私は読むことをお勧めします:
結合で考える
ネストされた選択
およびその他のチュートリアル:
https ://github.com/mbostock/d3/wiki/Tutorials
編集
異なる配列項目の意味が異なる場合は、代わりにオブジェクトを使用するのが一般的です(http://fiddle.jshell.net/YaAkv/1/):
var data = [{ fruit: 'apples', color: 'red'},
{ fruit: "oranges", color: "orange"},
{ fruit: "bananas", color: "yellow"}
];
var diventer = d3.select("body").selectAll("div.item")
.data(data)
.enter().append("div")
.attr("class", "item");
diventer.append("div")
.attr("class", "fruit")
.text(function(d) { return d.fruit; });
diventer.append("div")
.attr("class", "color")
.text(function(d) { return d.color; });
その場合、出力は次のようになります。
<div class="item">
<div class="fruit">apples</div>
<div class="color">red</div>
</div>
<div class="item">
<div class="fruit">oranges</div>
<div class="color">orange</div>
</div>
<div class="item">
<div class="fruit">bananas</div>
<div class="color">yellow</div>
</div>
これは、次の方法で元の2Dアレイを使用して実現することもできます(http://fiddle.jshell.net/YaAkv/2/):
var data = [['apples','red'], ["oranges", "orange"], ["bananas", "yellow"]];
var diventer = d3.select("body").selectAll("div.item")
.data(data)
.enter().append("div")
.attr("class", "item");
diventer.append("div")
.attr("class", "fruit")
.text(function(d) { return d[0]; });
diventer.append("div")
.attr("class", "color")
.text(function(d) { return d[1]; });
編集
選択を変数に保存しないソリューション:
var data = [['apples','red'], ["oranges", "orange"], ["bananas", "yellow"]];
d3.select("body").selectAll("div.item")
.data(data)
.enter().append("div")
.attr("class", "item")
.each(function(d) {
d3.select(this).append("div")
.attr("class", "fruit")
.text(d[0]);
d3.select(this).append("div")
.attr("class", "color")
.text(d[1]);
});