JavaScript:一句代码输出重复字符串(字符串乘法)
看到一个题目要求写一个函数times,输出str重复num次的字符串。
比如str:bac num:3
输出:abcabcabc
除了利用循环还有几种方法,我学习研究之后记下以下三种方法。
1. 递归,结合三元表达式更简洁。
2. 数组的 join() 方法。
3. ES6的 repeat() 方法。
-------新加入
4.string的replace()方法 ----原创的哇,明天去面试,复习的时候我自己想出来的
我最喜欢第一种,因为用的都是最基本的语法,没有调用其他方法。
除了第一种剩下都可以一句代码完成输出。
python可以 str*num ,最先误以为js也行,验证了。。。不行 Orz。。。
以下代码:(假设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:一句代码输出重复字符串(字符串乘法)的更多相关文章
- JavaScript:避免代码的重复执行
我喜欢到一些大型网站上去翻阅它们的原代码,期望能找到一些可以应用到自己的代码中的模式,或发现一些之前从未听说过的工具和技巧.可是,在我查看这些大型网站的源代码时,经常会发现一个问题,那就是重复的代码执 ...
- Javascript一句代码实现JS字符串去除重复字符
需求: 原字符串:abcdabecd 去重后字符串:abcde JS字符串去重,一个简单需求,网上找案例发现都是一大堆代码,对于强迫症的我 实再无法忍受,于是自己手动写出一段代码,完美解决该问题. 代 ...
- [Effective JavaScript 笔记] 第7条:视字符串为16位的代码单元序列
Unicode编码,基础:它为世界上所有的文字系统的每个字符单位分配一个唯一的整数,该整数介于0~1114111之间,在Unicode术语中称为代码点(code point). 和其它字符编码几乎没有 ...
- javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数
javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数 function test(){ var bt = document.getElementById(" ...
- java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法
1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...
- 一句python,一句R︱python中的字符串操作、中文乱码
先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. pandas可谓如雷贯耳,数据处理神器. 以下符号: = ...
- 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况
一句python,一句R︱python中的字符串操作.中文乱码.NaN情况 先学了R,最近刚刚上手Python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句pytho ...
- java去除重复的字符串和移除不想要的字符串
在java开发中碰到了有些字符串是重复的,如果在进行业务处理要全部遍历太对的数据就会重复,所以在进行业务处理前进行一个去重操作. 这里由于业务需要所以先将字符串转化为string数组,使用split分 ...
- yes---重复输出指定的字符串
yes命令在命令行中输出指定的字符串,直到yes进程被杀死.不带任何参数输入yes命令默认的字符串就是y. 语法 yes(参数) 参数 字符串:指定要重复打印的字符串. 实例 [root@localh ...
随机推荐
- kettle_删除“共享输出表”引发的错误
原创作品.出自 "深蓝的blog" 博客.欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong ...
- cocos2d-x 执行在 genymotion上面
1.jni/Application.mk加入红色圆圈内的參数 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWl6aXhpYW5zaGVuZw==/fon ...
- CentOS6.5配置代理上网
虚拟机vmWare下装了个CentOS,第一件事是配置代理上网,因为工作环境需要使用代理上网,但发觉与uBuntu不同,根本没有什么/etc/environment. 在网上疯狂搜索,都说要配置/et ...
- ios4--UIView的常见属性(尺寸和位置)
// // ViewController.m // 08-UIView的常见属性(尺寸和位置) // // frame:相对于父控件左上角定位 // bounds:改变长宽,左上角是相对于自己 // ...
- 51nod 1642 区间欧拉函数 && codeforce594D REQ
画一下柿子就知道是求区间乘积乘区间内所有质因数的(p-1)/p(就是求欧拉的公式嘛) 看上去莫队就很靠谱然而时间O(nsqrt(n)logn)并不资瓷 还是离线,确定右端点,对于1~i的区间内的质因数 ...
- bzoj1805: [Ioi2007]Sail 船帆
可以发现旗杆的顺序是没有用的,对于每列,它的答案是它的最大值mx*(mx+1)/2 高度由小到大排序旗杆,问题可以转化为在前h行选k个最小的值 考虑激情splay乱搞(我只会splay......) ...
- poj2104 k-th number 主席树入门讲解
poj2104 k-th number 主席树入门讲解 定义:主席树是一种可持久化的线段树 又叫函数式线段树 刚开始学是不是觉得很蒙逼啊 其实我也是 主席树说简单了 就是 保留你每一步操作完成之后 ...
- 洛谷 P4149 [ IOI 2011 ] Race —— 点分治
题目:https://www.luogu.org/problemnew/show/P4149 仍然是点分治: 不过因为是取 min ,所以不能用容斥,那么子树之间就必须分开算,记录桶时注意这个: 每次 ...
- bzoj1951 [Sdoi2010]古代猪文 ——数论综合
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 题意就是要求 G^( ∑(k|n) C(n,k) ) % p,用费马小定理处理指数,卢 ...
- 查看mysql是否安装成功和mysql的版本信息
转自:https://blog.csdn.net/hellocsz/article/details/81241204 使用快捷键win+R打开 进入mysql的安装目录下的\bin(本人安装路劲为E: ...