我想知道在JavaScript中是否有任何方法可以像这样遍历对象。

for(var i in myObject) {
    // ...
}

但是像这样获取每个属性的名称。

for(var i in myObject) {
    separateObj[myObject[i].name] = myObject[i];
}

我在谷歌上找不到类似的。他们说要传递变量的名称,但这不是我要实现的一个选项。

谢谢你能提供的任何帮助。


当前回答

免责声明 我把这个问题误解为:“我能知道一个对象所附加的属性名吗?”,但选择留下答案,因为有些人在搜索时可能会在这里结束。


不,一个对象可以附加到多个属性,因此它无法知道自己的名称。

var obj = {a:1};
var a = {x: obj, y: obj}

obj的名字是什么?

您确定不只是想要for循环中的属性名吗?

for (var propName in obj) {
  console.log("Iterating through prop with name", propName, " its value is ", obj[propName])
}

其他回答

I是名字。

for(var name in obj) {
    alert(name);
    var value = obj[name];
    alert(value);
}

你可以这样做:

seperateObj[i] = myObject[i];

获取对象的属性或“数组键”或“数组索引”,具体取决于您的母语是什么.....使用Object.keys()方法。

重要的是,这只与“现代浏览器”兼容:

如果你的对象叫做myObject。

var c = 0;
for(c in myObject) {
    console.log(Object.keys(myObject[c]));
}

要人!这绝对适用于最新的firefox、ie11和chrome…

下面是MDN的一些文档 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

您可以轻松地在对象中迭代

例:如果对象是 var ={答:“苹果”,乙:“球”,c:‘猫’,d:“娃娃”,e:‘大象’};

Object.keys(a).forEach(key => {
   console.log(key) // returns the keys in an object
   console.log(a[key])  // returns the appropriate value 
})

当你先执行for/in循环时,i是属性名。所以你有了属性名i,并通过myObject[i]来访问这个值。

免责声明 我把这个问题误解为:“我能知道一个对象所附加的属性名吗?”,但选择留下答案,因为有些人在搜索时可能会在这里结束。


不,一个对象可以附加到多个属性,因此它无法知道自己的名称。

var obj = {a:1};
var a = {x: obj, y: obj}

obj的名字是什么?

您确定不只是想要for循环中的属性名吗?

for (var propName in obj) {
  console.log("Iterating through prop with name", propName, " its value is ", obj[propName])
}