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

时间:2015-02-24 08:31:28

标签: javascript d3.js undefined

我得到一个" [错误] 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上尝试了这一点,我得到的结果相同。

1 个答案:

答案 0 :(得分:1)

我认为对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.

当然,这一切都取决于你最终想要达到的目标。

希望这有帮助