rsk*_*k82 8 javascript arrays loops
for (var name in ['dog','cat','cow']) {
alert(name);
}
Run Code Online (Sandbox Code Playgroud)
在name
这里返回数组的索引,但我不能引用它,因为它是匿名的.
我知道我可以在循环之外声明它,但在这里我问是否有一种方法可以直接引用没有索引的名称.
got*_*top 13
...没有.没有,至少没有原生循环.然而,有,ES5的的forEach:
['dog', 'cat', 'cow'].forEach(function(value, key) {
// do stuff
});
Run Code Online (Sandbox Code Playgroud)
这实际上是一样的.它在大多数地方都受到支持,除了在旧的IE中:例如es5-shim之类的东西,即使在这样的旧浏览器中也能启用ES5方法.
你有几个选择.
如果你使用的是jQuery,你可以这样做:
$.each(['dog','cat','cow'], function() {
var name = this;
alert(this);
});
Run Code Online (Sandbox Code Playgroud)
如果您不使用jQuery,您可以创建自己的功能
function each(array, pFunction) {
for(var i = 0; i < array.length; i++) {
var element = array[i];
pFunction(element);
}
}
each(['dog','cat','cow'], function(name) {
alert(name);
});
Run Code Online (Sandbox Code Playgroud)
如果你不想创建一个函数,你总是可以做这样的疯狂:(不推荐)
for (var name in { 'dog' : '','cat' : null,'cow' : null }) {
alert(name);
}
Run Code Online (Sandbox Code Playgroud)
如果您知道数组的键将是整数,则没有必要使用该for..in
构造.
for (var arr = ['dog','cat','cow'], name = 0; name < arr.length; name++ ) {
console.log(arr[ name ]);
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,一个更简单的for
循环允许创建一个新对象并通过循环内的键引用.