老师,我按照你的代码逻辑在leetcode提交代码,报Cannot read property 'length' of undefined错误
来源:3-3 电话号码组合-代码演示

朱青1900
2019-08-22
我的代码:
function letterCombinations(digits){
let map = ['', 1, 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz'] //用于映射1-9的输入(0就是空,1就是1,2是abc,以此类推)
let num = digits.split('') //把输入的数字转成数组(例如1234转成[1,2,3,4])
let code = [] //保存映射后的内容,如23映射后=>['abc','def']
num.forEach(item =>{
if(map[item]){ //如果输入的值对应map存在匹配项
code.push(map[item]) //进行映射,然后填入code
}
let comb = (arr) =>{ //声明一个方法,给他一个数组,就可以进行合并
let tmp = [] //临时变量,存储前两项合并的结果,还要把这个结果放入到arr(code)中
//遍历前两项(两层循环)
for (let i = 0, il = arr[0].length; i < il; i++) {
for (let j = 0, jl = arr[1].length; j < jl; j++) {
tmp.push(`${arr[0][i]}${arr[1][j]}`)
}
}
//splice替换掉code前两项
arr.splice(0,2,tmp)
//递归
if(arr.length>1){
comb(arr)
}else{
return tmp
}
return arr[0] //数组最后就一个元素,返回数组第一个元素的内容
}
//code调用comb函数
return comb(code)
})
}
报错:
Line 19 in solution.js
for(let j=0;j<arr[1].length;j++){
^
TypeError: Cannot read property 'length' of undefined
Line 19: Char 26 in solution.js (comb)
Line 37: Char 10 in solution.js (num.forEach.item)
at Array.forEach (<anonymous>)
Line 8: Char 6 in solution.js (letterCombinations)
Line 54: Char 19 in solution.js (Object.<anonymous>)
Line 16: Char 8 in runner.js (Object.runner)
Line 42: Char 26 in solution.js (Object.<anonymous>)
Line 689: Char 30 in loader.js (Module._compile)
Line 700: Char 10 in loader.js (Object.Module._extensions..js)
Line 599: Char 32 in loader.js (Module.load)
老师,这是为什么,一时想不懂。
写回答
1回答
-
朱青1900
提问者
2019-08-22
不好意思老师,我知道哪点问题了
022022-04-26
相似问题