有这样一个数据结构,使用的时候报"Cannot read property 'undefined' of undefined"

fangfa(type,state){
var stateMap = {

1: {

    1: '抽烟',

    2: '喝酒',

    3: '烫头'

            },

2: {

    1: '吃',

    2: '喝',

    3: 'piao'

            },

3: {

    1: 'du',

    2: '抽',

    3: '烟'

        },
}
returnstateMap[type][state]
}

image.png

请问为什么会报这个错,怎么解决

阅读 429
评论
    4 个回答

    fangfa(type,state)使用的时候参数没传是undefined

      你传的type和stateMap内的键对不上导致的,稍微调整一下
      `

      return (stateMap[type] && stateMap[type][state]) || ''

      `

        给这些个方法加个校验机制吧:

            valCheck(arr, obj) {
              return arr.reduce((a, b) => {
                if (a[b] === undefined) {
                  throw new Error(`error:::a:${JSON.stringify(a)};b:${b}`);
                } else {
                  return a[b];
                }
              }, obj);
            },
            fangfa(type, state) {
              const stateMap = {
                1: {
                  1: "抽烟",
        
                  2: "喝酒",
        
                  3: "烫头"
                },
        
                2: {
                  1: "吃",
        
                  2: "喝",
        
                  3: "piao"
                },
        
                3: {
                  1: "du",
        
                  2: "抽",
        
                  3: "烟"
                }
              };
              return this.valCheck(Array.from(arguments),stateMap);
            }

        报错的时候根据error看看是哪一步错了

          • 1
          • 新人请关照
          function  fangfa(type, state) {
              var  stateMap = {
                  1: {
                      1:  '抽烟',
                      2:  '喝酒',
                      3:  '烫头'
                  },
                  2: {
                      1:  '吃',
                      2:  '喝',
                      3:  'piao'
                  },
                  3: {
                      1:  'du',
                      2:  '抽',
                      3:  '烟'
                  }
              };
              return stateMap[type][state];
          }
          // 调用
          console.log(fangfa(1,2)); // '喝酒'
            撰写回答

            登录后参与交流、获取后续更新提醒

            相似问题
            推荐文章