我有一个数组,我试图从这些数组中提取值。问题是,当它击中空数组时,我会得到一个未定义的错误。
下面是我正在处理的数组:
data = [[Object { myvar=null}], [Object { myvar="testval"}], [], [], []]
下面是我用来获取所有myvar值的javascript:
myarr = [];
for (var i = 0; i < data.length; i++) {
console.log(data[i][0].myvar);
if (data[i][0].myvar) {
dep = data[i][0].myvar;
if (dep != null) {
myarr.push(dep);
}
}
}
console.log看起来像:
null
testval
Error: data[i][0] is undefined
因此,当它到达第一个[]时,它就会断裂。如何删除for循环之前的所有空数组?还是让for循环在命中空数组时不死?任何帮助都很感激。谢谢。
发布于 2013-08-29 05:32:38
您只需检查当前项是否为空:
if (data[i].length === 0) continue;
发布于 2013-08-29 05:40:32
只是想加入这个作为答案..。在javascript中,我相信null == false
。所以你也可以这样做:
if(data[i][0])
//it's not null or undefined, do some work
发布于 2013-08-29 05:43:44
您需要确保datai是一个数组,并且它首先至少有一个项:
var i, item, myarr = [],
isNotEmptyArray = function(a) {
return Object.prototype.toString.call(a) === '[object Array]' && a.length > 0;
};
for (i = 0; i < data.length; i++) {
item = data[i];
if (isNotEmptyArray(item) && item[0].myvar) {
console.log(item[0].myvar);
dep = item[0].myvar;
if (dep != null) {
myarr.push(dep);
}
}
}
https://stackoverflow.com/questions/18512396
复制相似问题