资讯专栏INFORMATION COLUMN

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

ralap / 2570人阅读

摘要:逛知乎的时候看到一个问题,不能使用循环,传入和生成一个长度为,每一项都是的数组。方法三来自在捷克的猎人我后面也想到了,哈哈可以用或,来自灰色碰触用用的少,一下就想不起来了希望能看到大家更好的方法,感觉自己进了死胡同

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

来自ntnyq, ntnyq说的数组的fill()方法,之前都不知道的,感谢,然后立刻就想到了类似可以去完成功能的,map()和filter()。

function getArr(n,m) {
    // 方法三: fill()
    return Array(n).fill(m)
} 
getArr(10, "aa") // ["aa", "aa", "aa", "aa", "aa", "aa", "aa", "aa", "aa", "aa"]
map()

来自在捷克的猎人(我后面也想到了,哈哈)

function getArray(n, m){
    return result = Array(n).join(",").split(",").map(() => {
        return m
    })
}
while

可以用while 或 do ... while,来自灰色v碰触

用while用的少,一下就想不起来了...

希望能看到大家更好的方法,感觉自己进了死胡同...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/117226.html

相关文章

  • 不能使用m>form>循环传入m>nm>m, 生成一个长度m>nm>,每一都是m数组

    摘要:逛知乎的时候看到一个问题,不能使用循环,传入和生成一个长度为,每一项都是的数组。方法三来自在捷克的猎人我后面也想到了,哈哈可以用或,来自灰色碰触用用的少,一下就想不起来了希望能看到大家更好的方法,感觉自己进了死胡同 逛知乎的时候看到一个问题,不能使用for循环,传入n和m, 生成一个长度为n,每一项都是m的数组。第一反应是递归,然后再想到正则,还在思考中... 递归法 function...

    Vixb 评论0 收藏0
  • 不能使用m>form>循环传入m>nm>m, 生成一个长度m>nm>,每一都是m数组

    摘要:逛知乎的时候看到一个问题,不能使用循环,传入和生成一个长度为,每一项都是的数组。方法三来自在捷克的猎人我后面也想到了,哈哈可以用或,来自灰色碰触用用的少,一下就想不起来了希望能看到大家更好的方法,感觉自己进了死胡同 逛知乎的时候看到一个问题,不能使用for循环,传入n和m, 生成一个长度为n,每一项都是m的数组。第一反应是递归,然后再想到正则,还在思考中... 递归法 function...

    elva 评论0 收藏0
  • JavaScript 不使用循环,创建一个长度m数组,且数组每一项都m>nm>

    输入createArr(3, abc)输出[abc, abc, abc] 不使用循环,有以下方法: 1.递归法 showImg(https://segmentfault.com/img/bVbqlv3?w=289&h=289);思路如下:1.创建一个数组2.创建一个addEle函数用于给数组添加元素3.判断count是否为0,不为0时给数组尾部添加元素,使count - 14.调用addEle函数...

    ARGUS 评论0 收藏0
  • 【JavaScript入门】Array类型

    摘要:数组也是对象数据类型的数组也有属性名,只不过属性名是数字,我们把数字属性名称之为它的索引数组是以数字作为索引,索引从零开始,有一个属性代表数组的长度。 Array 数组也是对象数据类型的 typeof [] ->object数组也有属性名,只不过属性名是数字,我们把数字属性名称之为它的索引:数组是以数字作为索引,索引从零开始,有一个length属性代表数组的长度。 showImg(h...

    zxhaaa 评论0 收藏0
  • JS基础——数组API(1)

    摘要:不会修改原数组参数在每一项上调用的函数和作为归并基础的初始值可选的。改函数接收个参数前一个值当前值项的索引和数组对象。 数组API(1) 栈方法 (后进先出) 在栈的顶部进行插入和移除操作,使用 push 和 pop 方法结合(会修改原始数组) 在数组末尾插入(push可以添加多项) push var arr=[1,2,3]; var m=arr.push(m); console...

    AbnerMing 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<