如果数组为空则转义为避免错误

时间:2015-12-07 04:24:26

标签: javascript jquery arrays

for(var i=0;i < obj.length; i++){
obj[i].split(",");
}

上面的代码给了我undefined的分裂,这是因为我的obj的最后一项是一个看起来像这样的数组

[""]

如何解决这个问题?

5 个答案:

答案 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(","));
  }
}

以下提示实用。

https://jsfiddle.net/stm0qemn/1/