我想知道是否有一种方法可以在JavaScript中做一些类似PHP foreach循环的事情。我正在寻找的功能是类似这样的PHP代码片段:
foreach($data as $key => $value) { }
我在看JS for. in循环,但似乎没有办法指定as。如果我用一个'normal' for循环(for(var I = 0;I < data.length;i++),有办法抓取键=>值对吗?
我想知道是否有一种方法可以在JavaScript中做一些类似PHP foreach循环的事情。我正在寻找的功能是类似这样的PHP代码片段:
foreach($data as $key => $value) { }
我在看JS for. in循环,但似乎没有办法指定as。如果我用一个'normal' for循环(for(var I = 0;I < data.length;i++),有办法抓取键=>值对吗?
当前回答
是的,在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 ...
}
其他回答
在提出这个问题后的过去几年中,Javascript添加了一些新特性。其中一个是客体。条目的方法。
下面是直接从MDN复制的代码片段
const object1 = {
a: 'somestring',
b: 42
};
for (let [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
}
你可以用for. in来表示。
for (var key in data)
{
var value = data[key];
}
我假设你知道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]。
你可以使用'for in'循环来实现:
for (var key in bar) {
var value = bar[key];
}
for (var key in myMap) {
if (myMap.hasOwnProperty(key)) {
console.log("key =" + key);
console.log("value =" + myMap[key]);
}
}
在javascript中,每个对象都有一堆内置的键值对,其中包含元信息。当你循环遍历一个对象的所有键值对时,你也是在循环遍历它们。使用hasOwnProperty()可以过滤掉这些。