我想知道是否有办法foreach
在 JavaScript 中执行类似 PHP循环的操作。我正在寻找的功能类似于这个 PHP Snippet:
foreach($data as $key => $value) { }
我正在查看 JSfor..in
循环,但似乎无法指定as
. 如果我使用“正常”for 循环 ( for(var i = 0; i < data.length; i++
)执行此操作,有没有办法获取键 => 值对?
我想知道是否有办法foreach
在 JavaScript 中执行类似 PHP循环的操作。我正在寻找的功能类似于这个 PHP Snippet:
foreach($data as $key => $value) { }
我正在查看 JSfor..in
循环,但似乎无法指定as
. 如果我使用“正常”for 循环 ( for(var i = 0; i < data.length; i++
)执行此操作,有没有办法获取键 => 值对?
for (var k in target){
if (target.hasOwnProperty(k)) {
alert("Key is " + k + ", value is " + target[k]);
}
}
hasOwnProperty
用于检查您是否target
真的拥有该属性,而不是从其原型中继承它。更简单一点的是:
for (var k in target){
if (typeof target[k] !== 'function') {
alert("Key is " + k + ", value is" + target[k]);
}
}
它仅仅检查k
是不是方法(好像target
是array
,你会得到很多的方法提醒,如indexOf
,push
,pop
,等。)
如果您可以在本机或Babel(js 编译器)中使用ES6,那么您可以执行以下操作:
const test = {a: 1, b: 2, c: 3};
for (const [key, value] of Object.entries(test)) {
console.log(key, value);
}
这将打印出此输出:
a 1
b 2
c 3
该Object.entries()
方法返回给定对象自己的可枚举属性[key, value]
对的数组,其顺序与for...in
循环提供的顺序相同(区别在于 for-in 循环也枚举原型链中的属性)。
希望能帮助到你!=)
没有人提到,Object.keys
所以我会提到它。
Object.keys(obj).forEach(function (key) {
// do something with obj[key]
});
因为...in会为你工作。
for( var key in obj ) {
var value = obj[key];
}
在现代 JavaScript 中,您还可以这样做:
for ( const [key,value] of Object.entries( obj ) ) {
}
var obj = {...};
for (var key in obj) {
var value = obj[key];
}
php 语法只是糖。