d3从数据中获取密钥数组

时间:2017-10-17 23:05:29

标签: javascript d3.js

我正在尝试创建一个可以打开和关闭其系列的分组图表 - 这是一个有效的演示

https://bl.ocks.org/andrew-reid/64a6c1892d1893009d2b99b8abee75a7

我试图让它从json输入中运行 - 但我遇到了错误。

http://jsfiddle.net/0ht35rpb/231/

我基本上想从数据中获取密钥数组。

var keys = data.columns.slice(1); ^当它是csv

时,它曾经存在

所以需要获取此密钥

var keys = [
"AA",
"BB"
]

来自数据

var data = [{
"State": "CA",
"AA": 100,
"BB": 200
},
{
"State": "TX",
"AA": 454,
"BB": 344
}];

2 个答案:

答案 0 :(得分:2)

由于columns没有创建d3.json属性,您可以使用d3.keys获取密钥:

var keys = d3.keys(data[0]).slice(1);

这是一个演示:



var data = [{
  "State": "CA",
  "AA": 100,
  "BB": 200
}, {
  "State": "TX",
  "AA": 454,
  "BB": 344
}];

var keys = d3.keys(data[0]).slice(1);

console.log(keys)

<script src="https://d3js.org/d3.v4.min.js"></script>
&#13;
&#13;
&#13;

由于密钥的顺序未定义,更安全的方法是删除slice并使用filter代替:

&#13;
&#13;
var data = [{
  "State": "CA",
  "AA": 100,
  "BB": 200
}, {
  "State": "TX",
  "AA": 454,
  "BB": 344
}];


var keys = d3.keys(data[0]).filter(function(d) {
  return d != "State";
});
console.log(keys)
&#13;
<script src="https://d3js.org/d3.v4.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您也可以使用Object.keys()