【问题标题】:Accessing the first value of the first key in an object访问对象中第一个键的第一个值
【发布时间】:2021-05-07 23:06:29
【问题描述】:

我在尝试获取某个对象的值时遇到了一点问题。由于这有点难以解释,我将设置一个符合我需要的场景。

{"Gmail": {"example@example.com": "password1", "anotherexample@example.com": "password2}, ...}

我有一个对象(如上所示,我们将对象称为“加密”)。我可以使用Object.keys(encrypted)[i] 获得值“Gmail”,其中i 代表我要查找的索引。我遇到的问题是,如何获取exaxmple@example.compassword1

我已经漫无目的地在它周围徘徊了一段时间,试图弄清楚这一点,寻找答案,但我似乎无法这样做或找到任何不基于数组的东西。任何帮助都很好,谢谢!

【问题讨论】:

  • 只是出于好奇,电子邮件帐户列表及其密码有什么用?
  • 您无法控制对象属性键的顺序。有已定义的规则,但您无法更改它们,这是一种非常脆弱的设计代码以依赖于该顺序的方式。
  • 完全相同的方式:const gmail = Object.keys(encrypted)[i];,然后是const addresses = Object.entries(gmail);(这将创建[["example@example.com", "password1"], ["anotherexample@example.com", "password2]],即一个数组数组)
  • @georg 我正在创建自己的个人密码管理器。目前我正在升级它,我想给它更多的组织。不知道我这样做的方式是否会完全奏效。
  • 在这种情况下,您需要以不同的方式组织它。使用像{ email: "example@example.com", password: "password1" } 这样的对象并将其放入数组中。这样您就可以简单地使用data[i].emaildata[i].password 来获取值。

标签: javascript object javascript-objects


【解决方案1】:

你可以使用Object.entries

参考https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries

这会将对象转换为 key - value 的数组,您可以对其进行遍历,例如:

const data = {
    "Gmail": { "example@example.com": "password1", "anotherexample@example.com": "password2" },
    "Gmail2": { "example@example.com": "password1", "anotherexample@example.com": "password2" },
};


Object.entries(data).forEach(([key, value]) => {
    const emailProvider = key;
    const emailList = Object.entries(value);

    console.log({ mail: emailProvider });

    emailList.forEach(([email, password]) => {
        console.log({ email, password })
    })
});

【讨论】:

  • 如果您的答案基本上是重新散列 MDN 页面,请考虑不要发布它。您可以随时帮助 OP 发表评论,但这似乎不是对 stackoverflow 的有用补充(这是关于创建详尽的常见问题解答,而不是从其他地方复制文档)
  • 如果您仔细观察,它不仅是来自 MDN 的复制粘贴,而且是针对 OP 实际要求的重新调整用途的示例,我决定将 MDN 也包括在内,以让 OP 知道有标准文档...
猜你喜欢
  • 2021-05-30
  • 1970-01-01
  • 2019-11-26
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
相关资源
最近更新 更多