【问题标题】:Get nth element of a key in an object获取对象中键的第 n 个元素
【发布时间】:2016-12-21 05:02:34
【问题描述】:

我想在 javascript 对象中返回键 hello.com 的第三个节点 (hello3.com)。

 nodes = {
        "hello.com":
            { 
                id:"hello1.com",
                id2:"hello2.com",
                id3:"hello3.com"
            }
        }

我知道我可以像这样获取所有键/值:

 newobject = nodes["hello.com"];

但是我如何获得第三个。我知道您不能指望对象中的顺序。如果没有,我可以通过 Maybeb id3 只拉第三个吗?

【问题讨论】:

  • 如果这是你想要的固定键,你可以试试这个newobject = nodes['hello.com']['id3']。
  • 因为你根本没有数组,所以没有nth element
  • 对象属性没有固有的顺序。如果要保证顺序,请使用数组。您可以获取所有属性名称的列表 (Object.keys(nodes["hello.com"])),然后对该列表进行排序并获取第三个...
  • @JaromandaX 如何将 id1、id2 和 id3 设为数组作为键 hello.com 的值
  • [ {id1:"hello1.com"}, {id2: "hello2.com"}, {id3: "hello3.com"} ] 是将其构造为数组但也保留 ID 的一种选择。

标签: javascript jquery


【解决方案1】:

当您说您不能指望对象的属性按任何特定顺序排列时,您回答了您自己的问题。如果您的属性本质上是连续的(您的属性在您的示例中计数),那么我建议尝试使用数组。

nodes = {
    "hello.com": [
        "hello1.com",
        "hello2.com",
        "hello3.com"
    ]
};

在上面的示例中,您将使用

访问第三个属性
nodes["hello.com"][2]

双括号表示法是因为"hello.com" 用引号引起来,以允许名称中包含.。如果密钥不需要引号,例如helloCom,您可以使用

nodes.helloCom[2]

除此之外,如果您按顺序命名您的键,那么您可以强加一个“顺序”。这并不是说任何属性实际上都在另一个之前或之后,而是您已经告知自己您想要它们的顺序。

【讨论】:

  • 在这种情况下,如何获取 hello.com 对象键的数组中的第三项
  • 已编辑!谢谢。这里已经很晚了。大声笑
【解决方案2】:

你可以试试这个,

 nodes = {
   "hello.com": {
     id: "hello1.com",
     id2: "hello2.com",
     id3: "hello3.com"
   }
 }
 console.log(nodes["hello.com"]["id3"]);

【讨论】:

  • 这很棒。这会拉取 id3 的值。所以没有办法拉取第三个元素的键名和值,除非知道那个键名id3?
  • @obreezy 是的,总是在specific 情况下,您需要使用您的key 来获得价值。否则循环并打印所有内容。如果有帮助,请接受并投票,以便对其他人有所帮助。谢谢。
【解决方案3】:

用途:

nodes['hello.com'].id3 or nodes['hello.com']['id3']

两者都是从给定对象获取 id3 数据的正确方法

【讨论】:

    【解决方案4】:

    按索引:

    关于按索引访问,不能直接实现。您可以获得的最接近的是键数组,但这也不能保证返回键的顺序。 See this answer 在其他线程上提供。

    for (var i in nodes["hello.com"]) { console.log(i);//logs id,id2,id3 };
    

    按节点名称:

    nodes["hello.com"] 返回对象。您可以使用 key 通过

    访问值

    1) 使用点符号:

    nodes["hello.com"].id3
    

    2) 或括号表示法

    nodes["hello.com"]["id3"]
    

    【讨论】:

      【解决方案5】:

      尝试以下表达式之一

      nodes["hello.com"]["id3"]
      

      或

      nodes["hello.com"].id3
      

      【讨论】:

        猜你喜欢
        • 2010-10-16
        • 2022-07-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 2012-02-02
        • 2014-07-06
        • 1970-01-01
        • 2016-02-26
        相关资源
        最近更新 更多