我有一个JavaScript对象,如下所示:

var p = {
    "p1": "value1",
    "p2": "value2",
    "p3": "value3"
};

我如何循环遍历p的所有元素(p1、p2、p3…)并获取它们的键和值?


当前回答

在Object.keys()上使用for

喜欢:

let对象={“key1”:“value1”,“key2”:“value2”,“key3”:“value3”};for(let key of Object.keys(对象)){console.log(key+“:”+对象[key])}

其他回答

最接近python的enumerate函数的解决方案:

for key, value in enumerate(object):
    # Do something

是Object.entries()和for of循环的组合:

for(let [key, value] of Object.entries(object)) {
    // Do something
}

let对象={key1:“value1”,key2:“value2”,key3:“value3”,key4:“value4”,key5:“value5”};for(let[key,value]of Object.entries(Object)){console.log(`${key}->${value}`);}

你可以使用我的库monadic对象来实现这一点。它的设计目的是简化对象修改并使其行为类似于数组:

p.forEach((key, value) => console.log(key, value))

安装:npm i一元对象

该库还包括以下方法:

地图滤器每一个一些

有关更多信息,请参阅README!

在最新的ES脚本中,您可以执行以下操作:

让p={foo:“bar”};for(let[key,value]of Object.entries(p)){console.log(键,值);}

您可以像这样迭代:

for (var key in p) {
  alert(p[key]);
}

注意,键不会接受属性的值,它只是一个索引值。

变量p={“p1”:“值1”,“p2”:“值2”,“p3”:“值3”};var myMap=新地图(Object.entries(p));for(let[k,v]of myMap.entries()){console.log(`${k}:${v}`)}<h3>ECMAScript 2017年</h3><p><b>Object.entries()</b>使将<b>对象转换为映射</b>变得简单:</p>