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

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

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


当前回答

在javascript中迭代对象的多种方法

正在使用。。。在回路中

变量p={“p1”:“值1”,“p2”:“值2”,“p3”:“值3”};for(输入p){if(p.hasOwnProperty(键)){console.log(`${key}:${p[key]}`)}}

正在使用。。。回路的

变量p={“p1”:“值1”,“p2”:“值2”,“p3”:“值3”};for(对象.keys(p)的let键){console.log(`key:${key}&value:${p[key]}`)}

将forEach()与Object.keys、Object.values、Object.entries一起使用

变量p={“p1”:“值1”,“p2”:“值2”,“p3”:“值3”};Object.keys(p).forEach(key=>{console.log(`${key}:${p[key]}`);});对象.values(p).forEach(值=>{console.log(值);});Object.entries(p).forEach(([key,value])=>{console.log(`${key}:${value}`)})

其他回答

由于es2015越来越流行,我发布了这个答案,其中包括使用生成器和迭代器平滑地遍历[key,value]对。这在其他语言中是可能的,例如Ruby。

好的,这里有一个代码:

常量MyObject={“a”:“您好”,'b':'它',“c”:“我”,“d”:“你”,“e”:“正在查找”,“f”:“for”,[Symbol.iiterat]:函数*(){for(Object.keys(this)的常量i){产量[i,this[i];}}};for(MyObject的常量[k,v]){console.log(`这里是键${k},这里是值${v}`);}

关于如何使用迭代器和生成器的所有信息,您可以在开发者Mozilla页面上找到。

希望它帮助了某人。

编辑:

ES2017将包含Object.entries,这将使对象中的[key,value]对的迭代更加容易。现在已知,根据ts39阶段信息,它将成为标准的一部分。

我认为是时候更新我的答案了,让它变得比现在更新鲜。

常量MyObject={“a”:“您好”,'b':'它',“c”:“我”,“d”:“你”,“e”:“正在查找”,“f”:“for”,};for(Object.entries(MyObject)的常量[k,v]){console.log(`这里是键${k},这里是值${v}`);}

您可以在上找到有关用法的更多信息MDN页面

变量p={“p1”:“值1”,“p2”:“值2”,“p3”:“值3”};for(p中的var键){if(p.hasOwnProperty(键)){console.log(key+“=”+p[key]);}}<p>输出:<br>p1=值1<br>p2=值2<br>p3=值3</p>

有两个选项:

您可以使用。。在那里

变量p={“p1”:“值1”,“p2”:“值2”,“p3”:“值3”};for(p中的常量项){console.log(`key=${item},value=${p[item]}`);}

您还可以调用Object.entries()来创建一个包含所有可枚举财产的数组。之后,您可以使用map、foreach或for循环浏览它。。属于

变量p={“p1”:“值1”,“p2”:“值2”,“p3”:“值3”};Object.entries(p).map(item=>{console.log(项)})

变量p={“p1”:“值1”,“p2”:“值2”,“p3”:“值3”};Object.entries(p).forEach(item=>{console.log(项)})

变量p={“p1”:“值1”,“p2”:“值2”,“p3”:“值3”};for(Object.entries(p)的常量项){console.log(项)}

有关Object.entries()的更多信息,请参见此处

Object.entries(myObject).map(([key, value]) => console.log(key, value))

你可以这样试试。myObject将是{name:“”,phone:“”}等等,这将生成密钥和值。所以这里的关键是名字,电话和价值就像狗,123123。

示例{name:“dog”}

这里的键是名字,值是狗。

变量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>