【问题标题】:Access dynamic key in javascript object [duplicate]访问javascript对象中的动态键[重复]
【发布时间】:2016-10-15 17:22:09
【问题描述】:

我不确定我问的问题是否正确,但它就是这样。我正在点击一个 API 并获得一个如下所示的 javascript 对象

x: {
  id: 1,
  username: 'Ryan',
  picture: 151
}

我将此对象存储在 myObj 常量中。我想访问 x 中的数据,但问题是每次我点击 API x 时都会更改名称。 x 内部的对象键保持不变,但有时 x 是 y、a、l、b 等。

现在正在尝试

myObj.x

但是一旦 x 是 y,我将不得不将其更改为 myObj.y。如何访问此动态对象内的属性?

解决方案:

myObj[Object.keys(myObj)[0]]

【问题讨论】:

  • 如果在任何给定时间,只有一个键,即 x、y、a 等,您可以执行 myObj[Object.keys(myObj)[0]]
  • 当你点击 API 时你得到了什么......?
  • 我投票结束这个问题,因为作者找到了解决方案。
  • @YeldarKurmangaliyev 鼓励自我回答问题。但解决方案应该是答案,而不是问题。

标签: javascript


【解决方案1】:

您只需要测试包含子属性 id 的属性

var obj = {
  a: {
      id: 1,
      username: 'Ryan',
      picture: 151
    },
  b: {
      ident: 2,
      firstName: 'jim',
      movie: 321
    }
};

var x = obj[Object.keys(obj).filter(item => obj[item].id)];
console.log(x); // { id: 1, username: 'Ryan', picture: 151 }

【讨论】:

    【解决方案2】:

    如果有多个键,请不要使用Object.keys(myObj)[0],因为返回数组的顺序取决于实现。

    相反,您应该使用类似的东西

    var x = getCurrentPropertyName(); // "x"
    // ...
    myObj[x];
    

    getCurrentPropertyName 以某种方式返回所需属性的当前名称。如果您无法知道这一点,则说明您的代码存在严重问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-23
      • 2018-05-20
      • 2019-02-12
      • 2013-05-05
      • 2018-12-05
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      相关资源
      最近更新 更多