首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在javascript数组中处理空对象

在javascript数组中处理空对象
EN

Stack Overflow用户
提问于 2013-08-29 05:30:09
回答 6查看 146关注 0票数 1

我有一个数组,我试图从这些数组中提取值。问题是,当它击中空数组时,我会得到一个未定义的错误。

下面是我正在处理的数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 data = [[Object { myvar=null}], [Object { myvar="testval"}], [], [], []]

下面是我用来获取所有myvar值的javascript:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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看起来像:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   null
   testval
   Error: data[i][0] is undefined

因此,当它到达第一个[]时,它就会断裂。如何删除for循环之前的所有空数组?还是让for循环在命中空数组时不死?任何帮助都很感激。谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-08-29 05:32:38

您只需检查当前项是否为空:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (data[i].length === 0) continue;
票数 3
EN

Stack Overflow用户

发布于 2013-08-29 05:40:32

只是想加入这个作为答案..。在javascript中,我相信null == false。所以你也可以这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(data[i][0])
   //it's not null or undefined, do some work
票数 0
EN

Stack Overflow用户

发布于 2013-08-29 05:43:44

您需要确保datai是一个数组,并且它首先至少有一个项:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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);
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18512396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文