Sco*_*ieB 2 arrays jquery max d3.js
我正在使用jQuery为D3中的绘图目的引入一串逗号分隔的数字.我试图获得这个阵列的最大值,但它并不顺利.
var x_data = $('.CostImport').text().split(',');
var y_data = $('.PriceImport').text().split(',');
var r_data = $('.SalesImport').text().split(',');
var c_data = $('.ZoneImport').text().split(',');
for (i = 0; i < x_data.length; i++) {
data.push({ "x": x_data[i], "y": y_data[i], "c": c_data[i], "r": r_data[i] });
}
alert(d3.max(r_data));
alert(d3.max(data, function (d) { return d.r }));
Run Code Online (Sandbox Code Playgroud)
这两个警报都传给我相同的号码,这是不正确的.实际最大值是928870,但我回到了9975.绘制一切正常(散点图,r确定大小和c颜色),所以我有点不知所措,为什么我不能拉最大数字.
有任何想法吗?
听起来这些值被视为字符串.您将需要使用parseInt或parseFloat(取决于值的精度)将它们转换为整数,以使max函数按预期工作.
这是一个将字符串数组转换为int的快速函数.这将是更好的原型,但对于一个快速和肮脏的例子,这将工作:
function toIntArray(arr) {
for (var i = 0; i < arr.length; i++) {
arr[i] = +arr[i];
}
return arr;
}
Run Code Online (Sandbox Code Playgroud)
保持您的代码不变,但修改这些行:
r_data = toIntArray(r_data);
data = toIntArray(data);
alert(d3.max(r_data));
alert(d3.max(data, function (d) { return d.r }));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2295 次 |
| 最近记录: |