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 に答える