2012-03-30 5 views
0

これは非常に簡単なはずですが、その方法はわかりません。私はオブジェクトのプロパティの量を取得し、最後のものをforループで取得する

var finalAmount = obj.length; 

は、今私はループ

for (var i in obj) { 
    --- some other code in here 
のために行くのループでそれを置くために含まれているどのように多くの特性を知りたい今すぐ

var obj = eval(result); 

私は、このオブジェクトを持っています

ここで、ループがobjの最終的なプロパティに到達するときに何かする必要があるという問題があります。これがIveの試みです。

if (i+1 == finalamount){ 
    //do something 
} else { 
    //do something else 
} 

ので、基本的にありますどのように多くの項目が含まれVARにそれを比較するためのポインタとしてiを使用し、この場合、最終的なループが、その後何かをするの1 ...

+0

[eval!を使用しない](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/eval#Don't_use_eval!)、obj.lengthは動作しそうにないあなたはevalが文字列や配列のようなものを返してきました。最後の項目で実際に何をしたいですか? –

答えて

0

を見つけたときにiは必ずしも数値ではないので、i+1は望ましい結果を得られない場合があります。それぞれのループ反復の最後に増分する個別のカウンタ変数を設定する必要があります。

+0

それはありがたいことに、私は別のカウンターを使いました。今は完璧です! –

0
  1. あなたの場合、objは配列でなければなりません。そうでない場合、i + 1はエラーをスローします。
  2. for-inループはシーケンスオーダーを保証しません。配列であっても、順序付けられていないプロパティーを反復するためにのみ使用されます。従来のfor(index=0;index<length;index++)(配列の場合)
  3. obj変数がArrayではなくObjectの場合は、オブジェクトデータ構造でのみ「最後のプロパティ」を取得することはできず、さらに情報(プロパティの順序)を提供する必要があります。
関連する問題