4

オブジェクトを反復処理する必要がありますが、最後の反復がいつ行われるかを知っています。どうやってやるの?オブジェクトには「長さ」属性がないため、反復回数を数えて長さと比較することはできません。私は次のようなことをしたいです

var len = 0;
for ( key in obj ) {
    len++;
}

var i = 0;
for ( key in obj ) {
    i++;
    var last_iter = (i == len);
    ...
}

もっと良い方法はありますか?

4

3 に答える 3

8

キーの数は、次を使用して確認できます。

var n = Object.keys(obj).length

ES5より前のブラウザでは、MDNWebサイトでシムを利用できます。

あなたの問題に対する可能な解決策はこれです:

var keys = Object.keys(obj);
while (keys.length) {

    var key = keys.shift();
    var value = obj[key];

    if (!keys.length) {
        // this is the last key
    }
}
于 2012-11-01T21:46:59.900 に答える
2

最後のキーで何かをする必要がある場合は、それを変数に設定して、ループの後で使用することができます。これにより、ループを2回節約できます。

var key = '';
for (key in obj) {
    //...
}
// Operation with last key...
// obj[key];
于 2012-11-01T21:47:20.670 に答える
0
var prev_key = false;
for (key in obj) {
  if(prev_key) {
    <code here>
  }
  prev_key = key;
}
<code here for last key>

このコードは、オブジェクトの最初のキーを取得できればより適切に機能するため、ifを回避できますが、JavaScriptで確実に実行することはできません(ループ内で同じ順序で反復することもできます)。

于 2012-11-01T21:47:37.380 に答える