这是我的第一个问题,希望您能提供帮助。目前我正在尝试遍历 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>";
};
};
This is the console I get back when I run this code
任何人都可以帮我一些代码想法来规避循环时的空响应。理想情况下,只要 API 数据中存在 null 或 #N/A,我就会打印数字并打印 N/A。
谢谢大家!
最佳答案
重写你的检查:而不是 if (typeof value == "undefined")
它应该是......
if (value === null) { ... }
...因为 .match()
在不匹配时返回 null
,而不是 undefined
。
作为旁注,您的代码可以稍微简化。首先,您不必在 FTSEContent 中重复整个 statusResponseParse.feed.entry
... 表达式,而是使用 Find
:
var FTSEContent = Find[i].content.$t;
其次,我的理解是您检查该内容字符串中的数字。在这种情况下,您可以稍微调整一下模式:
var value = FTSEContent.match(/(\d+(?:\.\d+)?)/);
...所以它不会消耗诸如'3..'和'3.14.15'之类的非法数字(在最后一种情况下,只会匹配3.14
),并且不会'不必全局匹配(无论如何你只处理第一个结果)。
关于javascript - 循环遍历包含空数据的数组列表的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35154498/