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

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

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


当前回答

只有JavaScript代码没有依赖项:

var p = {"p1": "value1", "p2": "value2", "p3": "value3"};
keys = Object.keys(p);   // ["p1", "p2", "p3"]

for(i = 0; i < keys.length; i++){
  console.log(keys[i] + "=" + p[keys[i]]);   // p1=value1, p2=value2, p3=value3
}

其他回答

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

注意:可以对数组执行此操作,但也要对长度和其他财产进行迭代。

方法返回给定对象自己的可枚举财产的数组。在此处阅读更多信息

变量p={“p1”:“值1”,“p2”:“值2”,“p3”:“值3”};Object.keys(p).map((key)=>console.log(key+“->”+p[key]))

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

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

如果还想迭代非可枚举财产,可以使用Object.getOwnPropertyNames(obj)返回直接在给定对象上找到的所有财产(可枚举或不可枚举)的数组。

var obj=对象.创建({}{//不可枚举属性获取食物:{value:函数(){return this.foo;},可枚举:false}});obj.foo=1;//可枚举属性Object.getOwnPropertyNames(obj).forEach(函数(名称){document.write(name+':'+obj[name]+'<br/>');});

单级缩进单组支架最高的浏览器兼容性hasOwnProperty安全

var p={“p1”:“value1”,“p2”:“value 2”,“p3”:“值3”};for(p中的var键)if(p.hasOwnProperty(键)){var值=p[key];console.log(键,值);}