如何从 javascript 中的对象值中 return 键?

How to return the key from object value in javascript?

我在 React 中有一个对象,我映射并想让它交互:我想要它,所以当用户点击元素旁边的 'X' 按钮时,它会 console.log 键该点击的元素。

这是对象:

var obj = {
  person1: {
    name: 'iggy',
    superPower: 'awesomeness',
    favDonut: 'chocolate'
  },
  person2: {
    name: 'iggy2',
    superPower: 'stupendousness',
    favDonut: 'glazed'
  },
  person3: {
    name: 'iggy3',
    superPower: 'amazingness',
    favDonut: 'chocolate sprinkles'
  }
};

迭代看起来像这样:

X chocolate
X glazed
X chocolate sprinkles

如果我单击 glazed 上的 x,我希望它成为 console.log person2,因为那是 glazed 的父对象。如果我在 chocolate sprinkles 上单击 x,我希望它成为 console.log person3.

这里是fiddle:https://jsfiddle.net/iggyfiddle/b9rreoje/2/

我想弄清楚的方法是 getPersonName 函数。允许用户单击 x 和 console.log 相关对象键的最佳方法是什么?

您需要将 onClick 设置为使用相应的人物对象调用 getPersonName 的内联函数。

  getPersonName: function(person){
    console.log(person);
  },

  render(){
    const donutValues = Object.values(obj).map((person, index) => <li key={index}><a href="#" onClick={function(){this.getPersonName(person)}.bind(this)}>X</a> {person.favDonut} </li>);
    return (
      <div>
        Hello 
          <ul>
            {donutValues}
          </ul>
          Give me person: {this.state.person}
      </div>
    );
  }

在这里找到更新的 jsfiddle:https://jsfiddle.net/8637u8qL/

与其执行 Object.values,不如执行 Object.keys,这样您就可以访问相应的密钥。

  getPersonName: function(person){
    console.log(person);
  }

const donutValues = Object.keys(obj).map((key, index) => <li key={index}><a href="#" onClick={() => this.getPersonName(key)}>X</a> {obj[key].favDonut} </li>);

已更新 fiddle:https://jsfiddle.net/b9rreoje/3/