从D3中的JSON中获取最大值
Getting the max values from JSON in D3
我将D3与JSON数据一起使用,其函数类似于:
d3.json("http://api.json", function(jsondata) {
var data = jsondata.map(function(d) { return d.number; });
这导致数据等于["2", "5", "8", "12"]
那么,如果我使用:var x = d3.scale.linear()
.domain([0, d3.max(data)])
返回的最大值是8,而不是12。我意识到这是因为8大于1/12,但我不知道如何解决这个问题。谢谢
根据API引用,d3.max使用自然顺序返回最大值。由于您计算的是字符串数组的最大值,因此使用字典(字母)顺序。比较:
console.log("8" > "12"); // true
console.log(8 > 12); // false
如果您想计算数组的最大数值,您可能应该先将这些字符串转换为数字。一种方便的方法是一元+
运算符:
var data = jsondata.map(function(d) { return +d.number; });
如果您愿意,还可以使用parseFloat、parseInt、Number或其他各种方法将字符串强制转换为数字。从技术上讲,您可以将此作为d3.max调用(d3.max(data, Number)
)的一部分来执行,但显式执行强制通常更快、更安全。
当然,由于您已经在使用JSON,并且JSON是一种类型化的序列化格式,因此将数字存储在JSON中而不是字符串中可能更有意义;那么你就不需要任何类型的强制了。
相关文章:
- 按最大值获取数组索引
- 从 JavaScript 中的数组中获取最大值和最小值
- 获取整数对象属性名称的最小值和最大值
- 从D3中的JSON中获取最大值
- 如何在JavaScript中从数组中获取最大值
- 从一个值数组中获取多个最大值
- JavaScript/Andercore获取对象中所有项的最小-最大值
- d3.js nvd3.js--获取y轴最小/最大值
- 如何获取数组中包含最大值的两个对象
- Javascript:如何获取输入范围内的最大值
- 在多维数组 JavaScript 或 coffeescript 中获取最大值
- 在格式化为 JSON 的变量中获取最大值
- 从geojson中获取最大值和最小值
- 使用javascript从JSON对象中获取最大值
- 从JS或jQuery中的数组中获取最大值
- 使用Javascript从多维数组中获取最大值
- 从带有函数和参数的关联数组中获取最大值或最小值
- JS中的变量,用于获取最大值的循环
- 从一系列输入字段中获取最大值
- 从JSON对象D3JS中获取最大值