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

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

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


当前回答

请尝试以下代码:

<script> 
 const games = {
  "Fifa": "232",
  "Minecraft": "476",
  "Call of Duty": "182"
 };

Object.keys(games).forEach((item, index, array) => {
  var msg = item+' '+games[item];
  console.log(msg);
});

其他回答

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

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

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

我假设你知道I是键,你可以通过data[I]获取值(只是想要一个快捷方式)。

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

data.forEach(function(value, index) {

});

MDN文档为不支持它的浏览器提供了一个缓冲。

当然,这并不适用于对象,但你可以为它们创建一个类似的函数:

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

由于您使用jquery标记了问题,jquery提供了$。每个循环遍历数组和对象结构的[docs]。

如果你正在使用Lodash,你可以使用_.forEach

_.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
  console.log(key + ": " + value);
});
// => Logs 'a: 1' then 'b: 2' (iteration order is not guaranteed).

你可以用for. in来表示。

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

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

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