当前位置: 移动技术网 > IT编程>网页制作>CSS > 不能使用for循环,传入n和m,生成一个长度为n,每一项都是m的数组

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

2019年01月22日  | 移动技术网IT编程  | 我要评论

村上鱼狗,张家界海市蜃楼,厦门中通快递电话

逛知乎的时候看到一个问题,不能使用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"]

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网