2016-04-27 11 views
0

私は、JQueryの各関数を使って反復処理するオブジェクトを持っています。しかし、長さプロパティを使用しようとすると、this stack overflow postに投稿された解決策は機能しません。私は長さのプロパティ値を取得しようとしたときにコンソールで定義されていません。これは、オブジェクトではなく配列を反復しているためです。JQueryの各関数の最後の要素を確認する

マイコード:

$.each(attributes, function(key, value) { 
     attrKey = key; 
     attrVal = value; 
     console.log(attributes.length); //returns undefined 
     //do something if it is the last element 
}); 
+0

オブジェクトドン」を試してみてくださいtは長さのプロパティを持っています...そのため、あなたは未定義になります。 'Object.keys(attributes).length'を試してください – JonH

+0

Javascriptネイティブ 'for ... in'を使用しているはずですが、jQueryはこのようなものに対してちょっと残忍です。 – Derek

+0

はい、これは、他の投稿が最後の要素であるかどうかを確認する方法がわかりません長さが最後の要素かどうかをチェックします。この例では長さが動かないので、最後の反復をどのようにチェックするのでしょうか? –

答えて

0

var index = 1; 
$.each(attributes, function(key, value) { 
    if(Object.keys(attributes).length == index) 
    { 
     // Do something 
    } 
    index++; 
}); 
2

平野Javascript代わりに試してみてください。

for (var key in attributes) { 
    var value = attributes[key]; 
    // process key,value... 
} 

編集:

あなたはobjectで最後のキー/値を取得しようとしている場合は、することができます't。 Javascriptオブジェクトは順序付けされていないため、追加のキー/値の割り当てがいつ行われたかを把握できません。順序が重要な場合は、attributesをオブジェクトのarrayに変更することをお勧めします。各オブジェクトは単一のキー/値です。または、https://github.com/trentrichardson/Orderingなどのサードパーティライブラリを使用します。

あなたはObject.keysを使用し、attributesにキーの数を取得したい場合:@ PaulFrenchのあたり

Object.keys(attributes).length 
0

をコメント:

length = Object.keys(attributes).length; 
if(n < length) { 
     //do something 
} 
関連する問題