2016-10-04 3 views
2

Я использую d3.js v4. Я выполнил следующий код на консоли Google Chrome Chrome.d3.js селектор не возвращает фактический объект

var theData = [ 1, 2, 3 ] 

var p = d3.select("body").selectAll("p") 
      .data(theData) 
      .enter() 
      .append("p") 
      .text("hello "); 

console.log(p); 

Я ожидал, что результат, как этот:

enter image description here

Но то, что я получаю, как показано ниже

enter image description here

Может кто-то пожалуйста, помогите мне, почему эта разница здесь?

ответ

4

Согласно D3 4.x API:

Выборки больше не подкласса массива с использованием прототипа инъекции цепи; теперь они простые объекты, улучшающие производительность.

Так, в версии D3 4.x, являются объектов.

Кроме того, стоит отметить, что вы используете сжатую версию (https://d3js.org/d3.v4.min.js), которая возвращает:

zi {_groups: Array[1], _parents: Array[1]} 

В обычной версии (https://d3js.org/d3.v4.js), то console.log возвращение должно быть:

Selection {_groups: Array[1], _parents: Array[1]} 

Если вы хотите получить что-то похожее на то, что у вас было в D3 v3, используйте nodes():

var theData = [ 1, 2, 3 ] 
 

 
var p = d3.select("body").selectAll("p") 
 
      .data(theData) 
 
      .enter() 
 
      .append("p") 
 
      .text("hello "); 
 

 
console.log(p.nodes());
<script src="https://d3js.org/d3.v4.js"></script>