2

我想知道是否有任何方法可以跳过对象循环中的键。如果我有:

obj = {
   key1 : [ 1, 2, 3 ],
   key2 : [ 4, 5 ],
   key3 : []
}

例如,我怎样才能跳过空的。因为我想要join()该对象中的非空数组,并过滤​​它们。如果我加入那个空数组,过滤器会寻找空字符串,当然它没有找到它,一切都会刹车。

var match = $('.widget');
for ( var i in obj ){
    var joined = obj[i].join();
    match = match.filter(joined);
}

我试图删除它:

if ( obj[i].length == 0 ) {
    delete obj[i]
};

但是会发生错误,即 obj[i] 未定义并且无法加入它。我怎么能跳过它。

4

2 回答 2

12

使用循环控制

for (var i in obj) {
   if (obj[i].length == 0) {
       continue;
   }
   ...
}
于 2013-01-28T18:58:41.980 回答
2

您需要传递密钥才能删除属性:

for ( var i in obj ){
    if ( obj[i].length == 0 ) {
        delete i
    }
}
于 2013-01-28T18:58:30.217 回答