2014-07-01 97 views
1

這樣的對象使用Array對象,的Javascript:通過字符串名稱

var myColumnDefs = [ 
    {key:"label", sortable:true, resizeable:true}, 
    {key:"notes", sortable:true,resizeable:true},...... 

我可以調用對象作爲這個方法,它的工作原理

... 
    myColumnDefs.key 
    ... 

但如何調用該對象與字符串名稱一樣

function myObject (string) { 
    return myColumnDefs.Stringname 

} 
alert(myObject('key')); 
alert(myObject('sortable')); 

感謝您的幫助

+0

得到元素是myColumnDefs一個或多個對象的數組? – shiva

回答

0

有兩種方法可以做到這一點。一種方法是將數組更改爲具有鍵名稱屬性的屬性的對象。另一種方法是搜索整個數組並找到正確名稱的密鑰。我會建議第一種方式,所以代碼如下所示:

var keyHolder = {};

for(var i = 0; i < myColumnDefs.length; i ++) { 
    if(!keyHolder.hasOwnProperty(myColumnDefs[i].key)) { 
    keyHolder[myColumnDefs[i].key = { 
     sortable: myColumnDefs[i].sortable, 
     resizeable: myColumnDefs[i].resizeable 
    } 
    } 
} 

然後,你可以這樣做:

keyHolder.label 

希望這有助於。

1

首先,我不認爲這會工作:

myColumnDefs.key;

您必須引用數組中的元素之一:

myColumnsDefs[0].key;

考慮到這一點你可以通過它的字符串名稱來引用屬性:

myColumnsDefs[0]['key'];

+0

@cerbrus。這是一個錯字。在電話上接聽很困難。我試圖展示如何通過名稱索引對象。我認爲這是回答這個問題。不是嗎? –

+0

所以,你不小心鍵入了'('而不是'[',在'[0]'之後?'.. ..更好的... – Cerbrus

+0

@cerbrus。啊,謝謝。現在更正。 –

相關問題