2014-07-01 75 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。啊,谢谢。现在更正。 –

相关问题