在获取 JSON 数组对象的最大值时,我得到了 NaN
和 Infinity
。
我正在尝试附加来自其他 JSON 的 GeoJSOn 数据的属性。 这是JSFiddle供引用。
代码片段:
$.map(data, function (e) {
var dev_id = e.dev_id;
var data = e.data;
for (var j = 0; j < data.length; j++) {
var rainVal = parseFloat(data[j].rain_value);
arr[j] = parseFloat(rainVal);
}
var max = Math.max.apply(Math, arr) * 4;
console.log(dev_id + " " + max)
for (var k = 0; k < len; k++) {
jsonObj_device_id = jsonObj.features[k].properties["device_id"];
if (jsonObj_device_id === dev_id) {
var nameR = "rain_intensity";
var rainValue = max;
jsonObj.features[k].properties[nameR] = rainValue;
}
}
});
最佳答案
您的代码中存在这样的情况,在 AJAX 响应中,您要么没有获取数据,即 e.data
或者如果您获得了您没有获得的数据 rain_value
。如果您没有得到 e.data
第一次,您将在控制台上登录 Infinity,因为 var max = Math.max.apply(Math, [])
结果 -Infinity
。如果您没有得到 rain_value
然后parseFloat
会给你NaN
.
在进行此类操作之前验证 API 响应。像这样的东西。
var dev_id = e.dev_id;
var data = e.data;
var max = 0, r;
var arr = [];
if(data) {
for (var j = 0; j < data.length; j++) {
r = data[j].rain_value || 0;
arr[j] = parseFloat(r);
}
}
if(arr.length) {
max = Math.max.apply(Math, arr) * 4;
}
console.log(dev_id + " " + max);
关于javascript - 无法从 JSON 数组获取正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31364232/