我想知道是否有一种方法可以在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++),有办法抓取键=>值对吗?
当前回答
你可以使用'for in'循环来实现:
for (var key in bar) {
var value = bar[key];
}
其他回答
var obj = {...};
for (var key in obj) {
var value = obj[key];
}
php语法简直就是糖。
for (var k in target){
if (target.hasOwnProperty(k)) {
alert("Key is " + k + ", value is " + target[k]);
}
}
hasOwnProperty用于检查目标是否真的具有该属性,而不是从其原型继承该属性。更简单的说法是:
for (var k in target){
if (typeof target[k] !== 'function') {
alert("Key is " + k + ", value is" + target[k]);
}
}
它只是检查k是不是一个方法(如果目标是数组,你会得到很多方法的警告,例如indexOf, push, pop等)。
下面是一个非常接近的例子。
for(var key in data){
var value = data[key];
//your processing here
}
如果你正在使用jQuery,请访问:http://api.jquery.com/jQuery.each/
为…他会为你工作的。
for( var key in obj ) {
var value = obj[key];
}
在现代JavaScript中,你也可以这样做:
for ( const [key,value] of Object.entries( obj ) ) {
}
在提出这个问题后的过去几年中,Javascript添加了一些新特性。其中一个是客体。条目的方法。
下面是直接从MDN复制的代码片段
const object1 = {
a: 'somestring',
b: 42
};
for (let [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
}