我想知道是否有办法foreach
在JavaScript中执行类似PHP 循环的操作。我正在寻找的功能类似于以下PHP代码片段:
foreach($data as $key => $value) { }
我当时在看JS for..in
循环,但是似乎没有办法指定as
。如果我使用“普通” for循环(for(var i = 0; i < data.length; i++
)执行此操作,是否有办法获取键=>值对?
我想知道是否有办法foreach
在JavaScript中执行类似PHP 循环的操作。我正在寻找的功能类似于以下PHP代码片段:
foreach($data as $key => $value) { }
我当时在看JS for..in
循环,但是似乎没有办法指定as
。如果我使用“普通” for循环(for(var i = 0; i < data.length; i++
)执行此操作,是否有办法获取键=>值对?
您可以使用for..in
。
for (var key in data)
{
var value = data[key];
}
您可以为此使用“ for in”循环:
for (var key in bar) {
var value = bar[key];
}
ES6将提供Map.prototype.forEach(callback),可以像这样使用
myMap.forEach(function(value, key, myMap) {
// Do something
});
没有人提到过,Object.keys
所以我会提及。
Object.keys(obj).forEach(function (key) {
// do something with obj[key]
});
for (var key in myMap) {
if (myMap.hasOwnProperty(key)) {
console.log("key =" + key);
console.log("value =" + myMap[key]);
}
}
在javascript中,每个对象都有一堆内置的具有元信息的键值对。当您遍历对象的所有键值对时,您也在遍历它们。使用hasOwnProperty()可以将其过滤掉。
var obj = {...};
for (var key in obj) {
var value = obj[key];
}
php语法只是糖。
我假设您知道这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, jQuery provides $.each
[docs] which loops over both, array and object structures.
因为...将为您工作。
for( var key in obj ) {
var value = obj[key];
}
在现代JavaScript中,您还可以执行以下操作:
for ( const [key,value] of Object.entries( obj ) ) {
}
下面是一个尽可能接近的示例。
如果您使用的是jQuery,请参见:http : //api.jquery.com/jQuery.each/