2012-11-23 55 views
1

我填我的鑰匙值數組這樣的鍵值風格:的JavaScript array`s長度保持爲0

/** 
* Callback: Gets invoked by the server when the data returns 
* 
* @param {Object} aObject 
*/ 
function retrieveStringsFromServerCallback(aObject){ 

    for(var i = 0;i < aObject['xml'].strings.appStringsList.length;i++){ 
     var tKey = aObject['xml'].strings.appStringsList[i]["@key"];  
     var tValue = aObject['xml'].strings.appStringsList[i]['$']; 
     configManager.addStringElement(tKey,tValue); 

    } 
} 

這裏是我的對象的二傳手

/** 
* @param {string} aKey 
* @param {string} aValue 
*/ 
this.addStringElement = function(aKey, aValue){ 
    self.iStringMap[aKey] = aValue; 
    console.log("LENGTH: "+self.iStringMap.length); 
} 

我增加約300鍵值根據谷歌鉻檢查員,對iStringMap填寫正確。但是數組的長度似乎仍然是0.一定有什麼錯誤。任何幫助非常讚賞

回答

3

可以使用獲得對象鍵的次數:

Object.keys(obj).length 

Object.keys()返回的第一個參數傳遞的對象的鍵數組。之後,您正在訪問該陣列的.length

+0

好吧,它打印正確的長度。所以array.length操作符返回0,因爲數組是用對象填充的? – dan

+0

@dan:不,它返回0,因爲它不是數組,它是一個對象。數組和對象是JS – zerkms

+0

中的不同容器我明白了。非常感謝好友。 – dan