【问题标题】:Javascript: Use Array Object via stringnameJavascript:通过字符串名称使用数组对象
【发布时间】:2014-07-01 06:38:36
【问题描述】:

喜欢这个对象,

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

我可以调用object作为这个方法,它可以工作

...
    myColumnDefs.key
    ...

但是如何用类似 Stringname 的方式调用这个对象

function myObject (string) {
    return myColumnDefs.Stringname

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

感谢帮助

【问题讨论】:

  • myColumnDefs 是对象还是对象数组?

标签: javascript object javascript-objects


【解决方案1】:

您必须使用 myColumnDefs[Stringname] Here is the working fiddle 在您的情况下,您必须通过 myColumnDefs[element_index][Stringname] 获取元素

【讨论】:

    【解决方案2】:

    首先,我认为这行不通:

    myColumnDefs.key;

    您必须引用数组中的元素之一:

    myColumnsDefs[0].key;

    考虑到这一点,您可以通过执行以下操作通过字符串名称引用属性:

    myColumnsDefs[0]['key'];

    【讨论】:

    • @cerbrus。那是一个错字。用电话接听电话很困难。我试图展示如何按名称索引对象。我认为这是在回答问题。不是吗?
    • 所以,您不小心在[0] 之后输入了( 而不是[?.. 这样更好...
    • 我不确定这是否能回答问题,因为问题含糊不清,但至少代码有效:) -1 已删除。
    • +1 它确实回答了这个问题,还提供了有关索引不正确的信息,因此更进一步。
    【解决方案3】:

    有两种方法可以做到这一点。一种方法是将数组更改为具有键名是属性的属性的对象。另一种方法是搜索整个数组并找到具有正确名称的键。我建议第一种方式,所以代码看起来像这样:

    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
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      相关资源
      最近更新 更多