当前位置: 首页 > Web前端 > HTML

不能使用for循环,传入n和m, 生成一个长度为n,每一项都是m的数组

时间:2023-04-02 14:11:29 HTML

不能使用for循环,传入n和m,生成一个长度为n的数组,每一项为m一个长度为n的数组,每一项为m。第一反应是递归,然后想到正则化,还在想...递归方法functiongetArr(n,m){//方法一:递归letarr=newArray(n)functionsetData(index){if(index>=0){if(!arr[index]){arr[index]=m}setData(index-1)}}setData(arr.length-1)returnarr}getArr(10,'aa')//["aa","aa","aa","aa","aa","aa","aa","aa","aa","aa"]常规函数getArr(n,m){//方法二:正则(缺点:当传入的数据有,时,作为分隔符会报错,需要优化逻辑)letstr=newArray(n).join('')//生成对应长度的字符串str=str.replace(/\s?/g,m)//使用正则替换得到对应的字符串str=str.replace(newRegExp(`(${m})`,'g'),'$1,')//获取逗号分隔的字符串str=str.substring(0,str.length-1)returnstr.split(',')}getArr(3,'12345')//["12345","12345","12345"]f??ill()来自ntnyq,ntnyq说的数组的fill()方法,之前不知道,谢谢,然后立马想到了类似的东西来完成功能,map()和filter()。functiongetArr(n,m){//方法3:fill()returnArray(n).fill(m)}getArr(10,'aa')//["aa","aa","aa","aa","aa","aa","aa","aa","aa","aa"]map()来自捷克的猎人(后来我也想到了,哈哈)函数getArray(n,m){returnresult=Array(n).join(",").split(",").map(()=>{returnm})}while可用于while或do...while,fromgreyvtouch用的while少,所以一下子想不起来了。。。希望能看到大家更好的方法,感觉自己进了一个死胡同。。。