看到一个题目要求写一个函数times,输出str重复num次的字符串。

比如str:bac     num:3

输出:abcabcabc

除了利用循环还有几种方法,我学习研究之后记下以下三种方法。

1. 递归,结合三元表达式更简洁。

2. 数组的  join() 方法。

3. ES6的 repeat() 方法。

-------新加入

4.string的replace()方法 ----原创的哇,明天去面试,复习的时候我自己想出来的

我最喜欢第一种,因为用的都是最基本的语法,没有调用其他方法。

除了第一种剩下都可以一句代码完成输出。

python可以 str*num ,最先误以为js也行,验证了。。。不行  Orz。。。

我的github:swarz,欢迎给老弟我++星星

以下代码:(假设num有效)

/******************************************
1. 最简洁 三元表达式 + 递归
*******************************************/
var times = (str, num) => {
return num > 1 ? str += times(str, --num) : str;
}
console.log('1', times('abc', 3)); /******************************************
2. ES6 repeat()
*******************************************/
var times2 = (str, num) => str.repeat(num);
console.log('2', times2('abc', 3)); /******************************************
3. 数组方法 join()
*******************************************/
var times3 = (str, num) => new Array(num + 1).join(str);
console.log('3', times3('abc', 3)); /******************************************
4. 数组方法 fill() join()
*******************************************/
var times4 = (str, num) => new Array(num).fill(str).join('');
console.log('4', times4('abc', 3)); /******************************************
5. 用call()改变Array原型链上join()方法
可惜么理解 用对象添加属性?
*******************************************/
var times5 = (str, num) => Array.prototype.join.call({length: ++num}, str);
console.log('5', times5('abc', 3)); /******************************************
6.string.replace
*******************************************/
var times6 = (str, num) => Math.pow(10, num - 1).toString().replace(/1|0/g, str)
console.log('6', times6('abc', 3)); /*++++++++++++++++++++++++++++++++++++++++++
必须用一句代码实现的话
除了第一种,都可以用匿名函数立即执行实现
++++++++++++++++++++++++++++++++++++++++++*/
//例如:
console.log('e.g.1', ((str, num) => str.repeat(num))('abc', 3));
console.log('e.g.2', ((str, num) => new Array(num + 1).join(str))('abc', 3));

执行结果:

JavaScript:一句代码输出重复字符串(字符串乘法)的更多相关文章

  1. JavaScript:避免代码的重复执行

    我喜欢到一些大型网站上去翻阅它们的原代码,期望能找到一些可以应用到自己的代码中的模式,或发现一些之前从未听说过的工具和技巧.可是,在我查看这些大型网站的源代码时,经常会发现一个问题,那就是重复的代码执 ...

  2. Javascript一句代码实现JS字符串去除重复字符

    需求: 原字符串:abcdabecd 去重后字符串:abcde JS字符串去重,一个简单需求,网上找案例发现都是一大堆代码,对于强迫症的我 实再无法忍受,于是自己手动写出一段代码,完美解决该问题. 代 ...

  3. [Effective JavaScript 笔记] 第7条:视字符串为16位的代码单元序列

    Unicode编码,基础:它为世界上所有的文字系统的每个字符单位分配一个唯一的整数,该整数介于0~1114111之间,在Unicode术语中称为代码点(code point). 和其它字符编码几乎没有 ...

  4. javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数

    javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数 function test(){ var bt = document.getElementById(" ...

  5. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  6. 一句python,一句R︱python中的字符串操作、中文乱码

    先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. pandas可谓如雷贯耳,数据处理神器. 以下符号: = ...

  7. 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况

    一句python,一句R︱python中的字符串操作.中文乱码.NaN情况 先学了R,最近刚刚上手Python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句pytho ...

  8. java去除重复的字符串和移除不想要的字符串

    在java开发中碰到了有些字符串是重复的,如果在进行业务处理要全部遍历太对的数据就会重复,所以在进行业务处理前进行一个去重操作. 这里由于业务需要所以先将字符串转化为string数组,使用split分 ...

  9. yes---重复输出指定的字符串

    yes命令在命令行中输出指定的字符串,直到yes进程被杀死.不带任何参数输入yes命令默认的字符串就是y. 语法 yes(参数) 参数 字符串:指定要重复打印的字符串. 实例 [root@localh ...

随机推荐

  1. 使用VS2005安装和编译QT4.53源码

    学习Qt,当然是QT4好.可是装了4.86以后,网上下载的书中的例子大多无法直接用VS执行(个人不喜欢用QT Creator),即打开pro转换的时候出错(我也懒的研究为什么出错了).看了一下发布时间 ...

  2. ios7--UIImageView

    // // ViewController.m // 03-UIImageView的使用 // #import "ViewController.h" @interface ViewC ...

  3. adb protocol failure【转】

    本文转载自:http://blog.csdn.net/hang2/article/details/45080769 今天遇见一个现象 在Nexus4上面部分adb功能失效, 可以 adb push 到 ...

  4. (多项式)因式分解定理(Factor theorem)与多项式剩余定理(Polynomial remainder theorem)(多项式长除法)

    (多项式的)因式分解定理(factor theorem)是多项式剩余定理的特殊情况,也就是余项为 0 的情形. 0. 多项式长除法(Polynomial long division) Polynomi ...

  5. ajax接收处理json格式数据

    ajax在前后端的交互中应用非常广泛,通过请求后台接口接收处理json格式数据展现在前端页面. 下面我们来简单用 ajax在本地做一个接收并处理json的小例子 首先我们要新建一个叫做data的jso ...

  6. [Swift通天遁地]七、数据与安全-(12)使用Instruments Leaks工具检测内存泄露

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  7. Linux下安装Wine 运行、卸载 windows程序

    资料 首页 https://www.winehq.org/ 安装 https://www.winehq.org/download/ 教程 https://www.winehq.org/document ...

  8. 在下载jar包时,要有三个包,分别为使用的把class、查看文档的api、查看源代码的资源包

    字节码包: spring-webmvc-4.1.6.RELEASE.jar 文档包:    spring-webmvc-4.1.6.RELEASE-javadoc.jar 资源包:    webmvc ...

  9. html表单代码演示

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  10. Unicode ,UTF-8,assic, gbk, latin1编码 的区别

    1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte). ...