簡體   English   中英

從javascript中的對象數組獲取對象名稱

[英]Get object names from a array of objects in javascript

我找不到我的問題的解決方案。 我可能會使事情變得更復雜。

這是數組:

var Statistics = {
"STAT 1 COLUMNS" : ["Date","Group Name","Product Name","Version","Version Date","Status","Total","Total L0","Total L1","Total L2","To be validated","Created","Updated"],
"STAT 2 TITLE" : ["12/12/2013","Led Zeppelin","roofies","V5.3","2013-08-13 ","ACCEPTED <br/>(2013-9-10)","774","334","3","437","20","57","102"],
"STAT 3 TITLE" : ["22/11/2014","Deep Purple","upper","V1","2006-01-01 "," ","3","1","0","2","1"," "," "],
...
}

我想通過指定索引來獲取特定對象的對象名稱(例如“ STAT 1列”,“ STAT 2標題”,“ STAT 3標題” ..)。

例如,請給我對象的名稱('2')->“ STAT 3 TITLE”

你能幫我一下嗎?

嘗試:

function givemepleasethenameoftheobject(index, data) {
  var i = 0;
  for ( var k in data ) {
    if ( index == i++ ) {
      return k;
    }
  }
}

var result = givemepleasethenameoftheobject(2, Statistics);

這應該可以實現您所需要的:

function getStatisticName(index)
{
    var count = 0;
    for(var i in Statistics)
    {
        if(count == index)
            return i;

        count++;
    }
}

看到這個jsFiddle

嘗試使用“ Object.keys();” 功能。

Object.keys(Statistics); // ['STAT 1 COLUMNS', 'STAT 2 TITLE', 'STAT 3 TITLE'];

對象鍵順序沒有JavaScript的保證,所以gimmeTheKey(Statistics, 2) 不能保證返回"STAT 3 TITLE"

然而:

function gimmeTheKey( obj, idx ){
    return Object.keys( obj )[idx];
}

您可以像這樣遍歷對象的成員:

for (var key in Statistics) {
  console.log(key);
}

但是,您不能像這樣通過索引可靠地訪問它們。 不能保證對象中的成員保持與創建它們時相同的順序,並且實際上不同的瀏覽器的成員順序也不同。

如果要以可預測的方式按索引訪問成員名稱,則需要獲取所有名稱,然后對它們進行排序:

function givemepleasethenameoftheobject(index) {
  var keys = [];
  for (var key in Statistics) {
    keys.push(key);
  }
  keys.sort();
  return keys[index];
}

如果不需要與舊版瀏覽器(例如Internet Explorer 8)兼容,則可以使用Object.Keys方法

function givemepleasethenameoftheobject(index) {
  var keys = Object.keys(Statistics);
  keys.sort();
  return keys[index];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM