看到一个题目要求写一个函数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. 【转】Linux 查看CPU信息、机器型号等硬件信息

    测试机器的硬件信息: 查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c       8  Intel(R) Xeo ...

  2. zTree初体验(一)——小试牛刀

    zTree 是一个依靠 jQuery 实现的多功能 "树插件".优异的性能.灵活的配置.多种功能的组合是 zTree 最大长处. --zTree官网 zTree v3.0 将核心代 ...

  3. LeetCode 8. String to Integer (atoi) (字符串到整数)

    Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...

  4. Ubuntu12.04LTS 安装 eclipse

    首先安装JDK,参考:Ubuntu12.04.3LTS安装Oracle Java 7 然后安装eclipse: 安装方法一:通过命令行/Software Center下载Ubuntu源中的Eclips ...

  5. 跨平台C、C++代码注意的事项

    在我们的开发中,跨平台的需求越来越强烈,怎样保持C/C++代码能在多个平台上编译,是一个比較值得研究的问题.关于跨平台的文章网上非常多,跨平台的库网上也非常多.那么我从自己的跨平台开发经验谈一谈自己的 ...

  6. 5.3.3 deque对象

    class collections.deque([iterable[, maxlen]]) 返回一个新双向队列,当有输入迭代器时.会从左至右地加入到队列里.假设没有输入參数,就创建一个空队列. deq ...

  7. oc83--自定义类实现copy方法

    // // main.m // 自定义类实现copy #import <Foundation/Foundation.h> #import "Person.h" #imp ...

  8. bzoj3112

    http://www.lydsy.com/JudgeOnline/problem.php?id=3112 模板题...模板又打错了... #include<bits/stdc++.h> u ...

  9. 【WIP】Bootstrap nav

    创建: 2017/09/28   更新: 2017/10/14 标题加上[WIP]

  10. 【知识总结】后缀数组(Suffix_Array)

    又是一个学了n遍还没学会的算法-- 后缀数组是一种常用的处理字符串问题的数据结构,主要由\(sa\)和\(rank\)两个数组组成.以下给出一些定义: \(str\)表示处理的字符串,长度为\(len ...