javascript - 如果 JSON 数组为 NULL,则返回 -1 仅适用于某些数据

标签 javascript jquery arrays json

我想要:

  • 如果 data(数组)为 null 或为空,则返回 -1
  • 如果 data 不为 null 并且数组具有 rain_value 属性,我想根据数组的长度获取该数组的第二个索引值

下面是我的代码片段:

success: function (data) {
        //console.log(data);
    $.map(data, function (e) {
        var max = -1;
        var dev_id = e.dev_id;
        var data = e.data;
        var r;
        if (data) {
            for (var j = 0; j < data.length; j++) {
                r = parseFloat(data[j].rain_value) || 0;
                arr[j] = parseFloat(r);
            }
        }
        if (arr.length) {
            max = arr[1] * 4;
            //max = Math.max.apply(Math, arr) * 4;
        }

        for (var k = 0; k < len; k++) {
            var 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;
            }
        }
        console.log(dev_id + " " + max)
    });
}

我似乎无法弄清楚为什么它只适用于某些数据。 这是Fiddle 。谢谢!

最佳答案

您正在循环外部而不是循环内部为变量 arr 分配一个空数组值。这意味着一旦您有了数据并且填充了该数组,接下来的每次迭代都将具有数组值。你需要每次都清除它,或者只在循环中声明它......

success: function (data) {
        //console.log(data);
    $.map(data, function (e) {
        var max = -1;
        var dev_id = e.dev_id;
        var data = e.data;
        var r;
        arr = [];   // <---- clear the array here
        if (data) {
            for (var j = 0; j < data.length; j++) {
                r = parseFloat(data[j].rain_value) || 0;
                arr[j] = parseFloat(r);
            }
        }
        if (arr.length) {
            max = arr[1] * 4;
            //max = Math.max.apply(Math, arr) * 4;
        }

        for (var k = 0; k < len; k++) {
            var 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;
            }
        }
        console.log(dev_id + " " + max)
    });
}

<强> Working jsfiddle link

关于javascript - 如果 JSON 数组为 NULL,则返回 -1 仅适用于某些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31408317/

相关文章:

javascript - React库如何重新渲染组件

javascript - 使用 Selenium 和 java 测试 React JS 下拉列表

c - 纯 C 中 .Net Buffer.BlockCopy 的类似物是什么?

javascript - 缩短我的 jQuery

需要 jquery 复选框,无法使用 jquery 验证插件

c - 如何在输入数组中打印出每个字符的地址和内容

PHP 数组作为数组键

javascript - WordJS body.getOoxml bug 添加空段落

javascript - Angularjs 获取范围属性而不在自定义指令中使用隔离范围

javascript - 在中间列悬停时显示 HTML 表侧列