描述:
難點:
將[[‘a’,‘b’,‘c’],[‘d’,‘e’,‘f’]]輸出為[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
關鍵代碼描述:
1.假設我們已經根據輸入的數字得到了 rawArr = [[‘a’,‘b’,‘c’],[‘d’,‘e’,‘f’]]
2. 下一步將rawArr[0]中的每一個元素與 rawArr[1]中的每一個元素相加…
3. reduce是對數組中相鄰的元素進行操作,并將結果保留…
// 實現.
rawArr.reduce( (a,b) =>{let tmpArr= [];a.forEach(ai=>{b.forEach(bi =>{tmpArr.push(ai + bi);}}
}
總體代碼:
var letterCombinations = function(digits) {if(digits.length < 1) return []let map = new Map();map.set('2',['a','b','c']);map.set('3',['d','e','f']);map.set('4',['g','h','i']);map.set('5',['j','k','l']);map.set('6',['m','n','o']);map.set('7',['p','q','r','s']);map.set('8',['t','u','v']);map.set('9',['w','x','y','z']);digits = digits.replace(/1/g,'');let rawArr = [];digits.split('').forEach(item=>{rawArr.push(map.get(item))})let retArr = rawArr.reduce((a,b)=>{let tmpArr = [];a.forEach((ai)=>{b.forEach((bi)=>{tmpArr.push(ai + bi)})})return tmpArr})return retArr
};