Javascript获取对象键名称

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript获取对象键名称相关的知识,希望对你有一定的参考价值。

我将如何获得以下关键字的名称?例如,我要“ button1”和“ button2”吗?

var buttons = 
    button1: 
        text: 'Close',
        onclick: function()

        
    ,
    button2: 
        text: 'Close2',
        onclick: function()

        
    


var i;
for(i in buttons)
    if(buttons.hasOwnProperty(i))
        alert(buttons[i].text);
    
 

我尝试使用.push(),尽管此方法不起作用。

答案

如果您稍微修改一下措词,可能会更好理解:

var buttons = 
  foo: 'bar',
  fiz: 'buz'
;

for ( var property in buttons ) 
  console.log( property ); // Outputs: foo, fiz or fiz, foo

这里请注意,您要遍历对象的属性,并在每个后续周期中使用property作为对每个对象的引用。

[MSDN谈到for ( variable in [object | array ] )以下内容:

在循环的每次迭代之前,都会为变量分配对象的下一个属性名称或数组的下一个元素索引。然后,您可以在循环内的任何语句中使用它来引用对象的属性或数组的元素。

也请注意,对象的属性顺序不是恒定的,并且可以更改,这与数组的索引顺序不同。可能会派上用场。

另一答案

ECMAscript版本5还为您提供了简洁的方法Object.keys()Object.getOwnPropertyNames()

所以

Object.keys( buttons );  // ['button1', 'button2'];
另一答案

alert(buttons[i].text);更改为alert(i);

另一答案

变量i是您的外观键名称。

另一答案

假设您有权访问原型,则可以使用。几分钟前,我为自己编写了这段代码;我一次只需要一个键,因此这对于大量的key:value对列表或吐出多个键名不是很省时。

function key(int) 
    var j = -1;
    for(var i in this) 
        j++;
        if(j==int) 
            return i;
         else 
            continue;
        
    

Object.prototype.key = key;

此编号的工作方式与阵列相同,可避免麻烦。对于您的代码:

buttons.key(0) // Should result in "button1"
另一答案

这是一个简单的示例,将帮助您获取对象键的名称。

var obj =parts:costPart:1000, salesPart: 2000; console.log(Object.keys(obj));

输出将是“零件”;

另一答案

ES6更新...尽管过滤器和地图可能都需要自定义。

Object.entries(theObj)返回对象的[[key,value],]数组表示形式,可以使用javascript的数组方法.each()、. any()、. forEach()、. filter(), .map()、. reduce()等]

[单独遍历对象Object.keys(theObj)Object.values()的部分省去了大量工作。

const buttons = 
    button1: 
        text: 'Close',
        onclick: function()

        
    ,
    button2: 
        text: 'OK',
        onclick: function()

        
    ,
    button3: 
        text: 'Cancel',
        onclick: function()

        
    


list = Object.entries(buttons)
    .filter(([key, value]) => `$key`[value] !== 'undefined' ) //has options
    .map(([key, value], idx) => `$idx $key: $value`)
    
console.log(list)

以上是关于Javascript获取对象键名称的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 JavaScript 对象的所有属性值(不知道键)?

获取键/值 javascript 对象的键的最佳方法

使用开发工具控制台中的 JavaScript 片段从 HTML 获取 YouTube 播放列表标题和频道名称

我将如何减少这个数组,以便每个对象中的对象被合并 javascript 但不知道键值名称

获取 JavaScript 对象的第一个键名 [重复]

javascript的对象:仅获取对象的第一个键[重复]