我想知道是否有一种方法可以在JavaScript中做一些类似PHP foreach循环的事情。我正在寻找的功能是类似这样的PHP代码片段:

foreach($data as $key => $value) { }

我在看JS for. in循环,但似乎没有办法指定as。如果我用一个'normal' for循环(for(var I = 0;I < data.length;i++),有办法抓取键=>值对吗?


当前回答

for (var k in target){
    if (target.hasOwnProperty(k)) {
         alert("Key is " + k + ", value is " + target[k]);
    }
}

hasOwnProperty用于检查目标是否真的具有该属性,而不是从其原型继承该属性。更简单的说法是:

for (var k in target){
    if (typeof target[k] !== 'function') {
         alert("Key is " + k + ", value is" + target[k]);
    }
}

它只是检查k是不是一个方法(如果目标是数组,你会得到很多方法的警告,例如indexOf, push, pop等)。

其他回答

你可以用for. in来表示。

for (var key in data)
{
    var value = data[key];
}

没有人提到Object。钥匙,所以我会提到它。

Object.keys(obj).forEach(function (key) {
   // do something with obj[key]
});

你可以使用'for in'循环来实现:

for (var key in bar) {
     var value = bar[key];
}

下面是一个非常接近的例子。

for(var key in data){
  var value = data[key];    
  //your processing here
}

如果你正在使用jQuery,请访问:http://api.jquery.com/jQuery.each/

是的,在javascript中你也可以有关联数组:

var obj = 
{
    name:'some name',
    otherProperty:'prop value',
    date: new Date()
};
for(i in obj)
{
    var propVal = obj[i]; // i is the key, and obj[i] is the value ...
}