javascript - 无法从 JSON 数组获取正确的值

标签 javascript jquery json

在获取 JSON 数组对象的最大值时,我得到了 NaNInfinity

我正在尝试附加来自其他 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/

相关文章:

javascript - 如何通过Selenium IDE模拟鼠标点击网站空白区域?

javascript - next js getInitialProps错误无法读取未定义的属性 'map'

javascript - Google map - 无法点击我的样式 map 中的标记

javascript - [Ruby on Rails] 找不到类型为 'jquery-ui/autocomplete' 的文件 'application/javascript'

javascript - 为 Restful Web 服务构建 JSON 配置的正确方法

javascript - 将 JSON 保存在 HTML 列表项中

javascript - 关闭与已打开的选项卡域匹配的所有新选项卡

javascript - 隐藏值低于特定值的类别 Highcharts

jquery - 错误 : Jquery form validate plug is appending duplicate error messages per field in firefox

javascript - 如何从api中获取数据?