Javascript获取对象键名

IT技术 javascript
2021-02-03 09:07:20

我如何获得关注的关键名称?例如,我想要“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()虽然这不起作用。

6个回答

如果您稍微修改一下措辞,可能会更好地理解这一点:

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 ] )

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

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

@Demodave要得到的值FOO属性,您只需把它关闭buttons对象:buttons.foo===buttons['foo']在 for 循环中,您可以调用buttons[property]. 今天你也可以Array.entries({foo:"bar",fizz:"buzz"})用来输出[['foo':'bar'],['fizz','buzz']]
2021-04-04 09:07:20
你会怎么得到 foo?
2021-04-05 09:07:20

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

所以

Object.keys( buttons );  // ['button1', 'button2'];
这将所有键作为一个数组。如何获取特定键的键名?
2021-04-04 09:07:20
我想这一点:Object.keys({myObj.fieldName})[0];
2021-04-08 09:07:20

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

变量i是你看起来的关键名称。

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)