看到一个题目要求写一个函数 times, 输出 str 重复 num 次的字符串.
比如 str:bac num:3
输出: abcabcabc
除了利用循环还有几种方法, 我学习研究之后记下以下三种方法.
1. 递归, 结合三元表达式更简洁.
2. 数组的 join() 方法.
3. ES6 的 repeat() 方法. ES6 目前没有全部兼容.
我最喜欢第一种, 因为用的都是最基本的语法, 没有另外调用方法.
python 可以 str*num , 最先误以为 JS 也行.
以下为三种方式代码:
- // 三元表达式 + 递归
- function times(str, num){
- return num> 1 ? str += times(str, --num): str;
- }
- console.log(times('abc', 3));
- // 数组方法
- // 另外可用 call() 改变 Array 原型链上 join() 方法的对象并指向 String
- function times2(str, num){
- return new Array(num+1).join(str);
- }
- console.log(times2('abc', 3));
- //ES6 repeat()
- function times3(str, num) {
- return num> 1 ? str.repeat(num): str;
- }
- console.log(times3('abc', 3));
来源: http://www.qdfuns.com/article/51117/77888bffd9dfc106ef76ba94ae933167.html