循环遍历具有空数据的数组列表时出现问题

Issues looping through a list of arrays with null data

本文关键字:列表 问题 数组 遍历 数据 循环      更新时间:2023-09-26

这是我在这里的第一个问题,希望你能提供帮助。目前,我正在尝试遍历包含 100 个数组的 API 列表,所有这些数组都包含一个数据字符串。我的循环过滤数字数据并将其打印到div id。但是,当我用"#N/A"而不是数字点击数据时,它会中断我的循环。我尝试嵌套一个 if 语句来检查数据是否为 null,但由于它将 null 数据视为对象,因此这不起作用。我已经包含了注释掉的代码来显示我尝试过的事情:

var xhr = new XMLHttpRequest();
var URL = "https://spreadsheets.google.com/feeds/list/0AhySzEddwIC1dEtpWF9hQUhCWURZNEViUmpUeVgwdGc/1/public/basic?alt=json";
xhr.open("GET", URL, false);
xhr.send();
var statusResponseStringify = JSON.stringify(xhr.responseText, "", 2);
var statusResponseParse = JSON.parse(xhr.responseText);
var Find = statusResponseParse.feed.entry;
for (var i = 0; i < Find.length; i++) {

var FTSEContent = statusResponseParse.feed.entry[i].content.$t;
document.getElementById("FTSEName").innerHTML+=FTSEContent + "<br><br>";
var text = FTSEContent;
var value = text.match(/('d['d'.]*)/g);
//var price = value[0];
//var change = value[1];
console.log(value);

/*if (typeof value === "number") {
document.getElementById("Change").innerHTML+=value + "<br>";
}
else if (typeof value === null) {
document.getElementById("Change").innerHTML+="N/A" + "<br>";
}
else if (typeof value === "object") {
document.getElementById("Change").innerHTML+="Smell" + "<br>";
}
else {
document.getElementById("Change").innerHTML+="poo" + "<br>";
};*/

if (typeof value == "undefined") {
document.getElementById("Print").innerHTML+="N/A" + "<br>";
}
else {
document.getElementById("Print").innerHTML+=value[0] + "<br>";
};
};

这是我运行此代码时返回的控制台

谁能帮我提供一些代码想法来规避循环时的空响应。理想情况下,我想打印数字并在 API 数据中存在空值或 #N/A 时打印 N/A。

谢谢大家!

重写

你的支票:而不是if (typeof value == "undefined")它应该是...

if (value === null) { ... }

。因为.match()返回null不匹配,而不是undefined.

作为旁注,您的代码可以简化一点。首先,您不必重复整个statusResponseParse.feed.entry...表达式 在 FTSEContent 中,请改用 Find

var FTSEContent = Find[i].content.$t;

其次,我的理解是检查该内容字符串中的数字。在这种情况下,您可以稍微调整一下模式:

var value = FTSEContent.match(/('d+(?:'.'d+)?)/);

。因此,它不会使用"3.."和"3.14.15"等非法数字(在最后一种情况下,只会匹配3.14),并且不必全局匹配(无论如何,您只处理第一个结果)。