新規にテーブルを生成して2次元配列の数値データを出力する

説明

D3.jsで新規にテーブルを生成して2次元配列の数値データを出力するには1行ごとにデータを取り出します。これはdata()メソッドに関数を指定し、関数内でd3.entries()メソッドを使ってデータを返します。以後データはkey, valueプロパティでアクセスすることができるようになります。このため、データを出力する際にtext()メソッドに関数を指定し関数内で渡されたデータ(オブジェクト)のvalueプロパティを返せば、2次元配列の要素1つが出力されます。
なお、D3.jsでデータをテーブル内に出力する方法についてはこちらのページを参照してください。

サンプル [サンプルを実行する] [サンプルをダウンロード]

HTMLソース

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>D3.js サンプル</title>
<link rel="stylesheet" href="css/main.css">
<style>
table,td { border : 1px solid black; }
</style>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
</head>
<body>
<h1>D3.jsサンプル</h1>
<div id="result"></div>
<script src="js/sample.js"></script>
</body>
</html>

JavaScriptコード

var list = [[10, 30], [23, 45], [65, 30], [67, 98]];
var tbl = d3.select("#result")	// div#result内に出力
	.append("table")	// table要素を追加
	.selectAll("tr")	// tr要素を対象にする
	.data(list)	// 出力するデータ
	.enter()	// データ数だけ要素を生成
	.append("tr")
	.selectAll("td")
	.data(function(row){	// 1行ごとにデータを返す
		return d3.entries(row);	// key, valueを返す
	})
	.enter()
	.append("td")	// td要素を追加
	.text(function(d){ 
		return d.value;	// valueが配列要素の値
	})