我有一个名为ret
的文件名数组。
我想得到每个文件名的扩展名。
var cList="";
var fName="";
var ext="";
for(var i=0;i<=ret.length-1;i++){
fName=ret[i];
ext=fName.split('.').pop();
if(ext=="msi"){
cList+="<br><span class='bld'>Yield Monitor Simulators</span><p>";
}
cList+="<a target='_blank' href='"+httpBase+"cheatsheets/"+fName+"'>"+fName+"</a><br>";
}
但是就行了:
ext=fName.split('.').pop();
我收到错误:“Uncaught TypeError:undefined不是函数”
为什么?
加入: 如果我只是注意到违规行,我会按预期获得文件列表。
var cList="";
var fName="";
var ext="";
for(var i=0;i<=ret.length-1;i++){
fName=ret[i];
//ext=fName.split('.').pop();
if(ext=="msi"){
cList+="<br><span class='bld'>Yield Monitor Simulators</span><p>";
}
cList+="<a target='_blank' href='"+httpBase+"cheatsheets/"+fName+"'>"+fName+"</a><br>";
}
仍然是jsfiddle,所以它必须是我的代码中的东西......
答案 0 :(得分:2)
解决方案是将toString()添加到fName变量。
fName=ret[i].toString();
显然从字符串值数组中获取的值不是字符串?
稍后补充:
for(var i=0;i<=ret.length-1;i++){
console.log(i, ret[i]);
console.log(i, ret[i], ret[i].split('.'), ret[i].split('.').pop());
fName=ret[i].toString();
第一个迭代控制台上的说:
0 ["2020.pdf"] index.js:115
Uncaught TypeError: undefined is not a function
答案 1 :(得分:1)
ret是一个包含数组的数组,其中包含一个字符串...而不是您期望的字符串数组,请检查ret的值:
[] means an array in javascript
["astring"] is an array containing a string
["astring",99] is an array containing a string at index 0 and a number at index 1
如果你在循环之前调试.log(ret),你可能会得到类似的东西:
[["string"],["string"],["string"]...]
instead of ["string","string","string"...]
这里需要一些javascript语法修改...努力工作