2016-03-01 72 views
1

说出如果您无法通过像objectName.objectItem这样的点符号访问对象内的某个项目,即它在时间上具有随机名称。有没有办法像第二个项目一样选择访问它?如何选择对象内的第n个项目

如何只知道它是第二个项目有?:键

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

键的顺序不是固定的JavaScript对象 – gurvinder372

+0

您可以使用Object.keys();但顺序不能保证是你期望的; – maioman

回答

6

顺序不是固定的JavaScript对象获得ITEM2从该对象。

您可以尝试

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

对象键没有顺序,但是您可以定义订单的钥匙你自己的二元关系。

说,你只考虑开始与"item"键和数字后缀,如item23,那么你就可以按自己的定义翻译到这个数目23并决定item23是你的数组中的项目。

请注意,这完全是任意的,只有在你想要的代码中才有它。也就是说,你可以实现一个过滤所有键的功能(只考虑那些以"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; 
}