替代“for of”-loop

时间:2013-07-25 05:33:21

标签: javascript syntax

我在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 */

}

有没有更智能的方法来解决每个浏览器的问题?

2 个答案:

答案 0 :(得分:3)

尝试使用Object.keys,只允许您获取该部分。

您可以在此处详细了解:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

(记住javascript中的所有关联数组都是对象)

请注意,只有IE> = 9

才支持

答案 1 :(得分: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]);
    };
}