逛知乎的時候看到一個問題,不能使用for循環,傳入n和m, 生成一個長度爲n,每一項都是m的數組。第一反應是遞歸,而後再想到正則,還在思考中...
function getArr(n,m) { // 方法一: 遞歸 let arr = new Array(n) function setData (index) { if (index >= 0) { if (!arr[index]) { arr[index] = m } setData(index - 1) } } setData(arr.length - 1) return arr } getArr(10, 'aa') // ["aa", "aa", "aa", "aa", "aa", "aa", "aa", "aa", "aa", "aa"]
function getArr(n,m) { // 方法二: 正則 (缺點:當傳入的數據帶,時,以,爲分隔符會出錯,邏輯還須要優化) let str = new Array(n).join(' ') // 生成對應長度的字符串 str = str.replace(/\s?/g, m) // 使用正則替換獲得對應的字符串 str = str.replace(new RegExp(`(${m})`, 'g'), '$1,') // 獲得逗號分隔的字符串 str = str.substring(0, str.length - 1) return str.split(',') } getArr(3, '12345') // ["12345", "12345", "12345"]
function getArr(n,m) { // 方法三: fill() return Array(n).fill(m) } getArr(10, 'aa') // ["aa", "aa", "aa", "aa", "aa", "aa", "aa", "aa", "aa", "aa"]
function getArray(n, m){ return result = Array(n).join(",").split(",").map(() => { return m }) }
用while用的少,一下就想不起來了...segmentfault
但願能看到你們更好的方法,感受本身進了死衚衕...數組