我得到一个" [错误] 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上尝试了这一点,我得到的结果相同。
答案 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.
当然,这一切都取决于你最终想要达到的目标。
希望这有帮助