for(var i=0;i < obj.length; i++){
obj[i].split(",");
}
上面的代码给了我undefined的分裂,这是因为我的obj的最后一项是一个看起来像这样的数组
[""]
如何解决这个问题?
答案 0 :(得分:1)
遍历项目时,如果且只有字符串且
obj[i]
为true value
var obj = ['', null, 100, undefined, 'abc,test'];
for (var i = 0; i < obj.length; i++) {
if (typeof obj[i] === 'string' && obj[i]) {
var test = obj[i].split(",");
console.log(test);
}
}
<强> Fiddle here 强>
答案 1 :(得分:0)
在我看来,你指的是一个空字符串而不是未定义,如果我错了,请纠正我。如果是&#34;未定义&#34;与空字符串不同的值,提供列表的内容会有所帮助。如果它真的是一个空字符串,只需使用if条件跳过它。
for (i = 0; i < obj.length; i++) {
if (obj[i] != '') {
obj[i].split(',');
}
}
答案 2 :(得分:0)
如果你的数组不包含数字(如零)或布尔值(如true
),那么你可以这样做:
for( var i = 0; i < obj.length; i++ ) {
( obj[i] || "" ).split(",");
}
答案 3 :(得分:0)
首先,你所做的事与你的代码没有任何关系。
即;
var obj = { a : "there,are,commas", b : "no commas" } ;
// next line of code doesnt do anything,
//just returns undefined on console.
obj["a"].split(",");
一堆未定义的s是因为这个事实。 当然,在控制台上。
// if you want to use it, you might have assigned it to a variable
var someVariable = obj["a"].split(",");
所以你的问题可能会有所不同。
答案 4 :(得分:0)
你应该在你的数组上调用toString,或者通过在obj [i]上使用toString方法来突出显示所有字符串。
var obj = ["23",[""]]
for(var i=0;i < obj.length; i++){
if(!obj[i].toString()==""){
console.info(obj[i].split(","));
}
}
以下提示实用。