d3转换为对象数组中的数字

时间:2017-10-15 22:03:21

标签: javascript arrays d3.js

我有这样的数据集:

var data = [{state: "CA", number: "3"},{}...];

我希望通过以下方式获取数据集中的最大数量:

d3.max(data, function(d){ return d.number;})

但是我没有得到正确的答案。有关如何纠正此问题的任何建议吗?

1 个答案:

答案 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>