如何在javascript对象中检索属性名称

时间:2016-03-10 17:04:57

标签: javascript

是否可以在javascript对象中检索第一个属性名称?

示例:

var example = {
    'att1': { /* stuff1 */},
    'att2': { /* stuff2 */},
    'att3': { /* stuff3 */}
};

我正在寻找一个返回第一个属性名称的函数,即字符串:att1

4 个答案:

答案 0 :(得分:2)

由于对象是无序的,您将无法获得“第一个”,但您可以迭代键名并检查特定值。

for (var key in example) {
   if (key === 'att1') {
      var val = example[key];
   }
}

答案 1 :(得分:0)

在JavaScript中,对象与顺序无关,因此没有保证方式来确保第一个属性是您想要的。我看到它有两种选择......

选项1:使用数组

 var example = [
   { /* stuff1 */},
   { /* stuff2 */},
   { /* stuff3 */}
 ];

现在您可以使用`example [0]。

安全地访问第一个对象

选项2:使用Object.keys

Object.keys将在对象中的所有(属性,如您所设置的)中创建一个数组。所以使用你的例子,它会像这样:

var example = {
  'att1': { /* stuff1 */},
  'att2': { /* stuff2 */},
  'att3': { /* stuff3 */}
};

// This will produce this array: ['attr1','attr2','attr3']
var keys = Object.keys(example)

因此,keys现在是所有对象属性名称的数组, if if 是此处的焦点你知道你正在寻找的具体名称,你可以直接遍历键,直到你发现它为止:

 keys.map(function(key) {
   if(key === 'attr1') {
     /* do something with example[key] */
   }
 });

希望这有帮助!

答案 2 :(得分:0)

你可以让所有财产都这样做

var example = {
 'att1': { /* stuff1 */},
 'att2': { /* stuff2 */},
 'att3': { /* stuff3 */}
};

for (var prop in example) {
  console.log("example." + prop + " = " + example[prop]);
}

// Output:
// "example.att1 = { /* stuff1 */}"
// "example.att2 = { /* stuff2 */}"
// "example.att3 = { /* stuff3 */}"

你可以得到第一个属性吗

var example = {
  'att1': { /* stuff1 */},
  'att2': { /* stuff2 */},
  'att3': { /* stuff3 */}
};

for (var prop in example) {
  if (prop == 'att1') {
    console.log("example." + prop + " = " + example[prop]);
  }     
}

// Output:
// "example.att1 = { /* stuff1 */}"

作为功能声明

var example = {
  'att1': { /* stuff1 */},
  'att2': { /* stuff2 */},
  'att3': { /* stuff3 */}
};

function getFirstProp() {
 for (var prop in example) {
   if (prop == 'att1') {
     return "example." + prop + " = " + example[prop];
   }     
 }
}

console.log(getFirstProp());

// Output:
// "example.att1 = { /* stuff1 */}"

答案 3 :(得分:-1)

您可以使用 Object.keys 方法获取密钥。

Object.keys(example)[0]