我有这样的数据集:
var data = [{state: "CA", number: "3"},{}...];
我希望通过以下方式获取数据集中的最大数量:
d3.max(data, function(d){ return d.number;})
但是我没有得到正确的答案。有关如何纠正此问题的任何建议吗?
答案 0 :(得分:2)
目前您正在比较字符串,结果可能不是您所期望的。
例如,查看此演示:
var data = [{
state: "CA",
number: "3"
}, {
state: "NY",
number: "5"
}, {
state: "PA",
number: "41"
}];
var max = d3.max(data, function(d) {
return d.number;
});
console.log("Max is: " + max)
<script src="https://d3js.org/d3.v4.min.js"></script>
您可能认为最大值为41
。但是,它返回"5"
,这确实是“最高”的字符串。
解决方案:将字符串转换为数字(此处,使用一元加运算符+
):
var data = [{
state: "CA",
number: "3"
}, {
state: "NY",
number: "5"
}, {
state: "PA",
number: "41"
}];
var max = d3.max(data, function(d) {
return +d.number;
// ^--- unary plus
});
console.log("Max is: " + max)
<script src="https://d3js.org/d3.v4.min.js"></script>