2

JavaScript で for-in ループを取得しましたが、キーだけに関心があります

for(var key in { foo:0, bar:0, blah:0 }) {
    /* do sth. with the key */

}

これは機能しますが、少しばかげているように見えます。Firefox は for-of ループを提供します。残念ながら、すべてのブラウザで機能するとは限りません。Opera 11 でもテストしましたが、動作しません。

// only firefox
for(var key of ["foo", "bar", "blah"]) { 
    /* do sth. with the key */

}

すべてのブラウザでこれを解決するよりスマートな方法はありますか?

4

2 に答える 2

3

古い IE (IE8 以前) 以外では、これを行うことができます。

["foo","bar","blah"].forEach(function(key) {
    // do something
});

IE の一部のバージョンでサポートを追加するには (IE7 と 8 では許可されていると思いますが、IE6 では許可されていません):

if( ![].forEach) {
    Array.prototype.forEach = function(callback) {
        for( var i=0, l=this.length; i<l; i++) callback(this[i]);
    };
}
于 2013-07-25T05:35:03.237 に答える
2

Object.keysその部分だけを取得できるように使用してみてください。

ここで詳細を読むことができます: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

(javascript のすべての連想配列はオブジェクトであることを思い出してください)

IE >= 9 でのみサポートされていることに注意してください

于 2013-07-25T05:34:53.110 に答える