逛知乎的时候看到一个问题,不能使用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
但愿能看到你们更好的方法,感受本身进了死胡同...数组