JavaScript中的For..In循环-键值对

我想知道是否有办法foreach在JavaScript中执行类似PHP 循环的操作。我正在寻找的功能类似于以下PHP代码片段:

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

我当时在看JS for..in循环,但是似乎没有办法指定as如果我使用“普通” for循环(for(var i = 0; i < data.length; i++执行此操作,是否有办法获取键=>值对?

路易阿飞2020/04/03 11:33:47

下面是一个尽可能接近的示例。

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

如果您使用的是jQuery,请参见:http : //api.jquery.com/jQuery.each/

飞云小哥2020/04/03 11:33:47

您可以使用for..in

for (var key in data)
{
    var value = data[key];
}
蛋蛋2020/04/03 11:33:47

您可以为此使用“ for in”循环:

for (var key in bar) {
     var value = bar[key];
}
猴子村村2020/04/03 11:33:47

ES6将提供Map.prototype.forEach(callback),可以像这样使用

myMap.forEach(function(value, key, myMap) {
                        // Do something
                    });
西里飞云2020/04/03 11:33:47

没有人提到过,Object.keys所以我会提及。

Object.keys(obj).forEach(function (key) {
   // do something with obj[key]
});
神无2020/04/03 11:33:47
for (var key in myMap) {
    if (myMap.hasOwnProperty(key)) {
        console.log("key =" + key);
        console.log("value =" + myMap[key]);
    }
}

在javascript中,每个对象都有一堆内置的具有元信息的键值对。当您遍历对象的所有键值对时,您也在遍历它们。使用hasOwnProperty()可以将其过滤掉。

番长樱梅2020/04/03 11:33:47
var obj = {...};
for (var key in obj) {
    var value = obj[key];

}

php语法只是糖。

Mandy2020/04/03 11:33:47

我假设您知道这i是关键,并且可以通过data[i](只需一个快捷方式)获取值

ECMAScript5 为数组引入了forEach [MDN](似乎您有一个数组):

data.forEach(function(value, index) {

});

The MDN documentation provides a shim for browsers not supporting it.

Of course this does not work for objects, but you can create a similar function for them:

function forEach(object, callback) {
    for(var prop in object) {
        if(object.hasOwnProperty(prop)) {
            callback(prop, object[prop]);
        }
    }
}

Since you tagged the question with , jQuery provides $.each [docs] which loops over both, array and object structures.

番长2020/04/03 11:33:47

因为...将为您工作。

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

在现代JavaScript中,您还可以执行以下操作:

for ( const [key,value] of Object.entries( obj ) ) {

}