获取对象的属性名称

Oli*_*cal 170 javascript properties object

我想知道在JavaScript中是否有任何方法可以循环遍历这样的对象.

for(var i in myObject) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但是得到这样的每个属性的名称.

for(var i in myObject) {
    separateObj[myObject[i].name] = myObject[i];
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法在谷歌上找到类似的东西.他们说要用它们传递变量的名称,但这不是我想要实现的选项.

谢谢你尽你所能的帮助.

Jos*_*ell 187

i 是名字.

for(var name in obj) {
    alert(name);
    var value = obj[name];
    alert(value);
}
Run Code Online (Sandbox Code Playgroud)

所以你可以这样做:

seperateObj[i] = myObject[i];
Run Code Online (Sandbox Code Playgroud)

  • 一个好的做法是在使用for..in时使用[HasOwnProperty](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/HasOwnProperty) (5认同)
  • @Bakudan知道你的意思,但更好的方法就是你应该使用`hasOwnProperty`如果你不想要继承的属性.这样你就不会盲目遵循一些规则.在某些情况下,您可能确实希望查看继承的属性.循环对象自己的属性的另一种方法是使用[Object.keys](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys).`Object.keys(obj).forEach(function(prop){alert obj [prop]})` (5认同)

小智 146

使用Object.keys():

var myObject = { a: 'c', b: 'a', c: 'b' };
var keyNames = Object.keys(myObject);
console.log(keyNames); // Outputs ["a","b","c"]
Run Code Online (Sandbox Code Playgroud)

Object.keys() 为您提供属于输入对象的属性名称数组.

  • 更具体地说,Object.keys(obj)返回属于传入的obj的属性名称(即键)的数组。 (3认同)
  • 另外,Object.keys() 只返回可枚举的属性,Object.getOwnProperties() 将返回它的所有属性 (2认同)

Jua*_*des 17

免责声明 我误解了这个问题:"我能否知道对象附加到的属性名称",但是选择留下答案,因为有些人可能会在搜索时结束.


不,一个对象可以附加到多个属性,因此无法知道其名称.

var obj = {a:1};
var a = {x: obj, y: obj}
Run Code Online (Sandbox Code Playgroud)

obj的名字是什么?

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

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


Nik*_*ats 8

除了“Object.keys( obj )”之外,我们还有非常简单的“for...in”循环 - 它循环对象的可枚举属性名称。

const obj = {"fName":"John","lName":"Doe"};

for (const key in obj) {
    //This will give key
      console.log(key);
    //This will give value
    console.log(obj[key]);
    
}
Run Code Online (Sandbox Code Playgroud)


ZEE*_*ZEE 7

用于按位置直接访问对象属性...通常对属性 [0] 有用...因此它保存有关进一步...的信息...或在 node.js 'require.cache[0]' 中为第一个加载的外部模块等等等等。

Object.keys( myObject )[ 0 ]
Object.keys( myObject )[ 1 ]
...
Object.keys( myObject )[ n ]
Run Code Online (Sandbox Code Playgroud)


Akh*_*ind 7

你可以轻松地迭代对象

例如:如果对象是var a = {a:'apple',b:'ball',c:'cat',d:'doll',e:'elephant'};

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