2015-02-24 31 views
0

我得到一个“[Error] TypeError:undefined不是一个对象(评估'm.get(”foo“)。name')”错误,我没有完全理解。该代码直接从d3js API页面获取,并在jsfiddle上试用时运行,但在我的计算机上无法运行。TypeError:undefined不是使用d3.map的对象

下面是完整的代码:


          
  
var m = d3.map([{name: "foo"}, {name: "bar"}], function(d) { return d.name; }); 
 
    console.log(m.get("foo").name);
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

我已经试过这两个Safari和Chrome,我得到了相同的结果。

+0

也许JSFiddle会有好处? – 2015-02-24 09:14:15

回答

1

我觉得有一个map方法的误解。它应该直接应用于您的对象,并且不会调用d3之一。例如:

var S=[{name: "foo"}, {name: "bar"}]; 
var m = S.map(function(d) { return d.name; }); 
console.log(m); 

这将返回对象:如果你正在考虑创建一个assosiative多维数组的

["foo","bar"] 

,也许你可以使用喜欢这里的d3.nest()方法:

var S=[{name: "foo", "coolvalue":5}, {name: "bar", "coolvalue":15}]; 
var w=d3.nest().key(function(d){return d.name}).map(S); 
console.log(w['foo'][0].coolvalue); 

这将输出5.

当然这都取决于o你最终想达到什么目的。

希望这会有所帮助

相关问题