javascript - 循环遍历包含空数据的数组列表的问题

标签 javascript arrays api loops

这是我的第一个问题,希望您能提供帮助。目前我正在尝试遍历 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/

相关文章:

javascript - 如何克隆数组中的对象项?

jquery - 如何通过 jQuery 更改浏览器上 HTML 表格的宽度

javascript - javascript是否像C++一样支持多重继承

javascript - 无法在angularJs中设置下拉列表的选定值

javascript - 从单独的窗口访问 JavaScript 对象

javascript - 我怎样才能只保留符合特定条件的数组项?

arrays - 如何从 C 函数返回 C 结构数组?

javascript - Metro 风格应用程序中 ListView 中的不同项目大小

android - 使用 Camera2 API 的图片真的很暗

api - 如何使用YouTube API V3