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

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

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


当前回答

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

myMap.forEach(function(value, key, myMap) {
                        // Do something
                    });

其他回答

在提出这个问题后的过去几年中,Javascript添加了一些新特性。其中一个是客体。条目的方法。

下面是直接从MDN复制的代码片段


const object1 = {
  a: 'somestring',
  b: 42
};

for (let [key, value] of Object.entries(object1)) {
  console.log(`${key}: ${value}`);
}

有三个选项来处理对象的键和值:

选择值: Object.values (obj)。forEach(value =>…); 选择键: 种(obj)。forEach(key =>…); 选择键和值: Object.entries (obj)。forEach(([key, value]) =>…

for (var key in myMap) {
    if (myMap.hasOwnProperty(key)) {
        console.log("key =" + key);
        console.log("value =" + myMap[key]);
    }
}

在javascript中,每个对象都有一堆内置的键值对,其中包含元信息。当你循环遍历一个对象的所有键值对时,你也是在循环遍历它们。使用hasOwnProperty()可以过滤掉这些。

你可以用for. in来表示。

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

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

myMap.forEach(function(value, key, myMap) {
                        // Do something
                    });