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

escape if array is empty to avoid error

本文关键字:错误 转义 数组 如果      更新时间:2023-09-26
for(var i=0;i < obj.length; i++){
obj[i].split(",");
}

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

[""]

如何解决这个问题?

循环访问项目,当且仅它是字符串类型并且obj[i]真值

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);
  }
}

在这里摆弄

如果您的数组不包含数字(如零(或布尔值(如 true(,那么您可以这样做:

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

您指的是空字符串而不是未定义的字符串,如果我错了,请纠正我。 如果它是不同于空字符串的"未定义"值,则提供您的列表会有所帮助。 如果它确实是一个空字符串,只需使用 if 条件跳过它。

for (i = 0; i < obj.length; i++) {
    if (obj[i] != '') { 
        obj[i].split(','); 
    } 
}

首先,你正在做的事情对你的代码没有任何意义。

即;

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

所以你的问题可能是不同的。

你应该在你的数组上调用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/