在javascript中访问数组内的对象

时间:2018-05-24 09:34:42

标签: javascript

以下是我打算构建的状态机的示例



  this.statemachine =
      {
           state: 'idle',
           transitions:
           {
                  idle:{
                          ebaseinit: function ()
                          {
                             console.log("Firebase Init complete");
                          } ,

                          coreinit : function ()
                          {
                             console.log("Firestore Init complete");
                          }

                       },
                   ready:
                      {
                         fetchdata : function ()
                         {
                           console.log("Getting                                   data");
                         }
                         

                      }    
           }
      }        



 根据发生的事件,我需要调用相应的功能。 试着 this.statemachine.transitions.indexof("空闲&#34) 这是行不通的。任何建议实现访问函数而不使用像this.statemachine.transitions [1]等直接数字应该有帮助

2 个答案:

答案 0 :(得分:1)

您可以捕获事件名称并将其用作对象键。

this.statemachine.transitions['ready']

答案 1 :(得分:1)

首先要了解的是statemachine.transitions不是数组object,这就是为什么你不能使用indexOf

if(this.statemachine.transitions)
 let obj = this.statemachine.transitions[statemachine.state]

您可以使用for循环遍历对象并找到您要查找的内容

if (this.statemachine.transitions){
      for (var key in this.statemachine.transitions) {
        if (this.statemachine.transitions.hasOwnProperty(key)) {
          if(this.statemachine.state == key){
            console.log(this.statemachine.transitions[key])
          }
        }
      }
    }