为。。在 JavaScript 中的循环 - 键值对

2022-08-29 23:03:47

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

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

我正在查看JS循环,但似乎没有办法指定.如果我使用“normal”for 循环 () 执行此操作,有没有办法获取键 = > 值对?for..inasfor(var i = 0; i < data.length; i++


答案 1
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]);
    }
}

它只是检查这不是一个方法(好像你会得到很多方法警报,例如,,,,等)。ktargetarrayindexOfpushpop


答案 2

如果您可以在本地使用 ES6 或与 Babel(js 编译器)一起使用,那么您可以执行以下操作:

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

该方法返回给定对象自己的可枚举属性对的数组,其顺序与循环提供的顺序相同(区别在于 for-in 循环也枚举原型链中的属性)。Object.entries()[key, value]for...in