(Javascript)LEETCODE题目,执行结果 & 本地环境可通过,提交代码时运行时错误,如何解决?

具体问题,LEETCODE第17题(简单难度)
https://leetcode-cn.com/probl...

我的代码:

/**
 * @param {string} digits
 * @return {string[]}
 */
var letterCombinations = function(digits) {
    //1. 建立数字和字母的映射 2~9
    let map=['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']
    //2. 字符串转数组,使其可遍历  23=>[2,3] 
    let nums = digits.split('')
    //3. 保存数字映射后的内容 [2,3]=>['abc','def'] 
    let code = []
    nums.forEach(item=>{
        if(map[item]){
            code.push(map[item])
        }
    })
    let comb = (arr)=>{
        let tmp=[]
        for(let i=0;i<arr[0].length;i++){
            for(let j=0;j<arr[1].length;j++){
                tmp.push(`${arr[0][i]}${arr[1][j]}`)
            }
        }
        arr.splice(0,2,tmp)
        if(arr.length>1){
            comb(arr)
        }
        else{
            return arr[0]
        }
        return arr[0]
    }
    return comb(code)
};

报错如下

执行出错信息:
Line 19: TypeError: Cannot read property 'length' of undefined

执行结果 & 本地环境可通过,提交代码时运行时错误,如何解决?

阅读 3.6k
2 个回答

你在本地试一下 letterCombinations('2')

本地运行通过,线上不通过,一般是本地运行的时候,你传入的参数类型比较单一。
而线上的,它会传各种可能的参数。

这里:
// for(let j=0;j<arr[1].length;j++)

当传入的参数只有一位数字的时候,arr[1]不存在

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题