在知乎上看到这么一个面试问题:”输入m,n参数,获取一个m长度的都是n的数组,不能用循环,怎么写”, 大家都在讨论为什么不能用循环,完全是吹毛求疵
我们先做一个前提:
- 不能用循环是不能用循环语句,而不是底层不能做循环
- m,n的参数合法(为了精简代码,只写核心部分)
具体的实现方式:
- 递归
|
|
注:面试官想要的答案
那么来看看还有哪些方法可以
- 1、join+split
|
|
注:这种方式需要先转成字符串,再转成数组,并且生成的数组是字符串而不是数字,如果需要生成的是数字则还需要做处理
- 2、concat
|
|
注:这种写法不太容易理解
- 3、正则表达式,
|
|
注:正则总是能神奇的发挥出作用
- 4、from(es5)
|
|
注:比较理想的一种做法
- 5、map(es5)
|
|
|
|
|
|
注:因为map会跳过没有赋值的键,所以不能直接在空数组上使用,上面几种也是比较理想的做法
- 6、fill(es6)
|
|
注:如果不考虑兼容,应该是最合适的方法
- 7、padStart padEnd(es8)
|
|
注:兼容性不好,实现方式亦不佳