【问题标题】:How to select nth item inside the object如何选择对象内的第 n 个项目
【发布时间】:2016-06-13 20:04:20
【问题描述】:

假设您无法通过点符号(如objectName.objectItem)访问对象内的某个项目,即它始终具有随机名称。有没有办法像第二项一样访问它?

如何通过只知道它是第二项从该对象中获取 item2?:

something: {
  item1: "text",
  item2: "text",
  item3: "text:,
  ...
}

【问题讨论】:

  • javascript 对象中键的顺序不固定
  • 你可以使用 Object.keys() ;但不保证订单符合您的预期;

标签: javascript json object


【解决方案1】:

对象键没有顺序,但您可以定义自己的二元关系来对键进行排序。

假设您只考虑以"item" 和数字后缀如item23 开头的键,那么您可以按照自己的定义 将其转换为数字23 并确定@ 987654324@ 是数组中的第 23 个 项。

请注意,这完全是任意的,并且仅在您希望它在您的代码中如此的情况下才是正确的。

也就是说,您可以实现过滤所有键的功能(仅考虑以"item" 开头的键),将数字后缀解析为数字,然后将其与您想要的项目索引进行比较。

这段代码完全符合我的预期:

function nth(obj, n)
{
  var key, i;

  for (key in obj)
  {
    if (obj.hasOwnProperty(key)) // always do this when you scan an object
    {
      if (key.indexOf("item") === 0) // this is the filter
      {
        i = parseInt(key.substring(4), 10); // parse the numeral after "item"
        if (i === n)
        {
          return obj[key]; // return this value
        }
      }
    }
  }

  return null;
}

【讨论】:

    【解决方案2】:

    javascript 对象中键的顺序不固定。

    你可以试试

    var secondKey = Object.keys(something)[1]; //fetched the key at second index
    alert(something[secondKey ]);
    

    【讨论】:

    猜你喜欢
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多