获取对象的属性名称

IT技术 javascript object properties
2021-01-30 05:01:22

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

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

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

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

我似乎在谷歌上找不到类似的东西。他们说要与他们一起传递变量的名称,但这不是我想要实现的选择。

谢谢你的尽心帮助。

6个回答

i 是名字。

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

所以你可以这样做:

seperateObj[i] = myObject[i];
@Juan Mendes 是的,我的意思是继承属性的情况。我被迫(遗憾地)使用这种方法,因为 IE8 不支持 Object.keys ...
2021-03-23 05:01:22
@Bakudan 知道您的意思,但更好的表达方式是,hasOwnProperty如果您不想要继承的属性,则应该使用它这样你就不会盲目地遵循某些规则。在某些情况下,您可能确实想查看继承的属性。另一种循环对象自身属性的方法是使用Object.keysObject.keys(obj).forEach(function(prop){ alert obj[prop]})
2021-04-07 05:01:22
可以通过括号语法访问对象属性。obj.prop1 与 obj['prop1'] 相同。
2021-04-11 05:01:22
一个好的做法是在使用 for..in 时使用HasOwnProperty
2021-04-11 05:01:22

使用Object.keys():

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

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

更具体地说,Object.keys(obj) 返回一个属性名称数组,即键,属于传入的 obj。
2021-04-07 05:01:22
另外,Object.keys() 只返回可枚举的属性,Object.getOwnProperties() 将返回它的所有属性
2021-04-11 05:01:22

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


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

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])
}
@ChadSchouggins 你说的是对的,但这不是我要回答的问题,因为是的,你可以遍历一个对象来获取每个属性名称。我正在回答一个可能不是 OP 意图的问题,我只是想澄清多个属性可以指向同一个对象。
2021-04-01 05:01:22

您可以轻松地迭代对象

例如:如果对象是 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 
})

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

Object.keys( myObject )[ 0 ]
Object.keys( myObject )[ 1 ]
...
Object.keys( myObject )[ n ]