json 如何选择对象内的第n项

vbkedwbf  于 2023-03-04  发布在  其他
关注(0)|答案(3)|浏览(171)

假设你无法通过点标记法(如objectName.objectItem)访问对象中的某个项目,即它始终具有随机名称。有没有办法像访问第二个项目一样访问它?
如何通过只知道item2是第二个项来从该对象中获取item2?:

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

a11xaf1n1#

键的顺序在javascript对象中不固定。
你可以试试

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

js81xvg62#

对象键没有顺序,但您可以定义自己的二元关系来对键进行排序。
假设您只考虑以"item"开头的键和一个数字后缀(如item23),那么您可以根据自己的定义将其转换为数字23,并确定item23是数组中的 * 第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;
}
798qvoo8

798qvoo83#

或者,使用Map...

something= new Map([ 
   [1, "text"],
   [2, "text"],
   [3, "text"]
])
something.get(nth)

相关问题