看到一个题目要求写一个函数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. Erlang下与其他程序和语言的通信机制(2)

    前面聊了普通端口,今天聊下链入式驱动端口,以及NIFs. 链入式驱动端口 如上图所示,链入式驱动端口与Erlang虚拟机存在于同一个OS进程中. 在Erlang这边与普通端口类似,所有与链入式驱动端口 ...

  2. VB Socket编程 框架

    [转载]VB Socket编程 框架 (2014-07-15 20:06:28) 转载▼ 标签: 转载   原文地址:VB Socket编程 框架作者:安静的浪花 VB Socket编程(Winsoc ...

  3. Pell Sequence

    /* * PellSequence.cpp * * Created on: 2013-09-08 16:46 * Author: lg * Description: a1 = 1, a2 = 2, . ...

  4. 去哪网实习总结:开发定时任务(JavaWeb)

    本来是以做数据挖掘的目的进去哪网的,结构却成了系统开发.. . 只是还是比較认真的做了三个月,老师非常认同我的工作态度和成果.. . 实习立即就要结束了.总结一下几点之前没有注意过的变成习惯和问题,分 ...

  5. 我不常用的 javascript

    获取当前时间:new Date    (最后的调用括号可加可不加) 获取当前时间戳: 方法1:Date.parse(new Date()) 方法2:(new Date()).valueOf() 方法3 ...

  6. MongoDB 开机自启动

    MongoDB安装了以后,应当设置开机自启动. 假设启动命令如下: sudo /db/mongodb/265/bin/mongod --config /db/conf/mongodb/mongodb. ...

  7. POJ 1663:Number Steps

    Number Steps Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13758   Accepted: 7430 Des ...

  8. C# 学习笔记 三层架构系列(控件一)

    下面是我两周的学习总结:这是我写给自己的,如果哪位朋友有幸看到这篇文章就是缘分.如果所说的内容不对,就请纠正.勿喷!!! 想要将两周的学习知识通过文字.通过代码.通过图片储备起来,以防自己那天思维短路 ...

  9. bzoj 2465 小球

    题目大意: 给定n个不同颜色的球,每个球都有一个分数,同时有m个瓶子,每个瓶子都有固定的容量 必须把球放到瓶子里面 计算最多能放多少个球到这些瓶子里 思路: 开始想的是费用流 超级源向每个球连一条 容 ...

  10. 【POI 2010】 Antisymmetry

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2084 [算法] manacher [代码] #include<bits/std ...