频道栏目
首页 > 程序开发 > web前端 > HTML/CSS > 正文
不能使用for循环,传入n和m,生成一个长度为n,每一项都是m的数组
2019-01-21 09:39:41           
收藏   我要投稿

逛知乎的时候看到一个问题,不能使用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, &世界杯投注官网39;aa&世界杯投注官网39;) // ["aa", "aa", "aa", "aa", "aa", "aa", "aa", "aa", "aa", "aa"]

正则法

function getArr(n,m) {
    // 方法二: 正则 (缺点:当传入的数据带,时,以,为分隔符会出错,逻辑还需要优化)
    let str = new Array(n).join(&世界杯投注官网39; &世界杯投注官网39;) // 生成对应长度的字符串
    str = str.replace(/\s/g, m)     // 使用正则替换得到对应的字符串
    str = str.replace(new RegExp(`(${m})`, &世界杯投注官网39;g&世界杯投注官网39;), &世界杯投注官网39;$1,&世界杯投注官网39;) // 得到逗号分隔的字符串
    str = str.substring(0, str.length - 1)
    return str.split(&世界杯投注官网39;,&世界杯投注官网39;)
} 
getArr(3, &世界杯投注官网39;12345&世界杯投注官网39;) // ["12345", "12345", "12345"]
点击复制链接 与好友分享!回本站首页
相关TAG标签 for 循环 数组
上一篇:使用VSCode调试javascript/typescript的一个技巧
下一篇:JavaScript之实现一个ES6Promise
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑--致力于做实用的IT技术学习网站

世界杯投注官网