gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 09:33:43 25 4
gpt4 key购买 nike

我想要:

  • 如果 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com