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 回答