Javascript If语句检查
我有一个if语句,它循环遍历csv数据。我用新行和逗号解析了51行,为每行提供了单独的数组。我的问题是我的if语句似乎不起作用,老实说,我不明白为什么。Raw是csv文件 这里更新了我如何分割csv文件Javascript If语句检查,javascript,if-statement,Javascript,If Statement,我有一个if语句,它循环遍历csv数据。我用新行和逗号解析了51行,为每行提供了单独的数组。我的问题是我的if语句似乎不起作用,老实说,我不明白为什么。Raw是csv文件 这里更新了我如何分割csv文件 console.log("Loaded: " + data.length); console.log("feature layer graphics: " + fl.graphics.length); console.log(data);
console.log("Loaded: " + data.length);
console.log("feature layer graphics: " + fl.graphics.length);
console.log(data);
var raw = data.split("\n");
var valMin = Infinity;
var valMax = -Infinity;
var arrayForBreaks = [];
控制台日志返回51 false
然后有一个控制台日志为true
for (var i = 0; i < raw.length; i++) {
var row = raw[i].split(",");
var name = " ";
var amount = " ";
if (row.length >= 6) {
name = row[0];
amount = row[1];
}
console.log(isNaN(row[1]));
stateData[name] = row;
valMin = Math.min(valMin, row[1]);
valMax = Math.max(valMax, row[1]);
arrayForBreaks.push(parseFloat(amount));
}; //end for loop
for(变量i=0;i=6){
名称=行[0];
金额=第[1]行;
}
log(isNaN(第[1]行));
stateData[名称]=行;
valMin=Math.min(valMin,第[1]行);
valMax=Math.max(valMax,第[1]行);
arrayForBreaks.push(parseFloat(amount));
}; //循环结束
所以我的问题是在if语句中,我正在检查数组中第一个元素的长度是否大于6,如果它是dump,那么这些变量中的名称和数量。我还有一个else语句来填充最后一个数组。但它似乎一直在数据末尾添加一个空行
[…]在if语句中,我正在检查数组中第一个元素的长度是否大于[n]6
不,那不是你正在做的row.length
将返回row
的元素数,row
是通过逗号分割原始字符串得到的数组。如果要检查第一个元素的长度,应改为检查行[0]。长度
所以我的问题是在if语句中,我检查数组中第一个元素的长度是否大于
没有
您正在检查数组中的元素是否超过6个,或者是否有6个逗号分隔的项
要检查第一个元素的长度,您需要:
if (row[0].length >= 6) {
....
想想这个(有效的!)csv行:“ABC,XYZ”,1,,“25,50”
-这个字符串中有多少个字段?根据您的代码,5-但实际上只有3个。您确定在分割操作之后,行变量的长度大于6吗?我想你甚至应该在你的问题中公布行的值,为了更好地理解,你可能还想检查一行是否为空并跳过它-很可能在原始输入文件的末尾有\n
。正如@AleksG所说,我会检查空行。我打赌你的文件末尾有一个空行。你希望它在控制台上登录什么?如果行[1]
可以转换为数字,isNaN()
按预期返回false
。最后一个true
可能来自CSV文件中的空最后一行,因为isNaN(“”)
返回true
。另外,最后一行实际上也包含一个EOF
标记,尽管它不应该首先读取到raw
。我只是把它放在那里,看看你在说什么,但它仍然有52行,最后一行是空的。那么你可能应该首先检查空行,然后跳过这些?