TypeError:undefined不是使用d3.map的对象

TypeError: undefined is not an object using d3.map

本文关键字:d3 map 对象 undefined TypeError      更新时间:2024-04-24

我得到一个"[Error]TypeError:undefined不是一个对象(正在计算'm.get("foo").name')"错误,我根本不理解。代码直接从d3js API页面获取,当我在jsfiddle上尝试它时可以工作,但在我的计算机上它不工作。

这是完整的代码:


    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上都试过,结果都一样。

我认为对map方法存在误解。它应该直接应用于对象,而不是在d3对象上调用。例如:

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

这将返回对象:

["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。

当然,这完全取决于你最终想要实现什么。

希望这能帮助