首页 > 代码库 > JavaScript面试题:重复输出一个给定的字符串
JavaScript面试题:重复输出一个给定的字符串
面试题
重复输出一个给定的字符串(str
第一个参数)n 次 (num
第二个参数),如果第二个参数num
不是正数的时候,返回空字符串。
function repeatStringNumTimes(str, num) { return str;}repeatStringNumTimes("abc", 3);
提供测试情况:
repeatStringNumTimes("*", 3) //应该返回 "***".repeatStringNumTimes("abc", 3) //应该返回 "abcabcabc".repeatStringNumTimes("abc", 4) //应该返回 "abcabcabcabc".repeatStringNumTimes("abc", 1) //应该返回 "abc".repeatStringNumTimes("*", 8) //应该返回 "********".repeatStringNumTimes("abc", -2) //应该返回 "".
解题思路
我将介绍三种方法:
- 使用 `while` 循环
- 使用递归
- 使用ES6 `repeat()`
方法1:通过 `while` 循环重复输出一个字符串
function repeatStringNumTimes(string, times) { var repeatedString = ""; while (times > 0) { repeatedString += string; times--; } return repeatedString;}repeatStringNumTimes("abc", 3);
不过这里还可以有几个变种:
对于老前端来说,首先一个可能会将字符串拼接,修改为 数组join()
拼接字符串,例如:
function repeatStringNumTimes(string, times) { var repeatedArr = []; // while (times > 0) { repeatedArr.push(string); times--; } return repeatedArr.join("");}repeatStringNumTimes("abc", 3)
很多老前端都有用数组join()
拼接字符串的“情怀”,因为很早以前普遍认为数组join()
拼接字符串比字符串+
拼接速度要快得多。不过现在未必,例如,V8 下+
拼接字符串,要比数组join()
拼接字符串快。我用这两个方法测试了3万次重复输出,只相差了几毫秒。
另一个变种可以用 for 循环:
function repeatStringNumTimes(string, times) { var repeatedString = ""; for(var i = 0; i < times ;i++) { repeatedString += string; } return repeatedString;}repeatStringNumTimes("abc", 3)
方法2:通过条件判断和递归重复输出一个字符串
递归是一种通过重复地调用函数本身,直到它达到达结果为止的迭代操作的技术。为了使其正常工作,必须包括递归的一些关键特征。
function repeatStringNumTimes(string, times) { if(times < 0) return ""; if(times === 1) return string; else return string + repeatStringNumTimes(string, times - 1);}repeatStringNumTimes("abc", 3);
方法3:使用ES6 `repeat()` 方法重复输出一个字符串
这个解决方案比较新潮,您将使用 String.prototype.repeat() 方法:
repeat() 方法构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本。 这个方法有一个参数 count
表示重复次数,介于0和正无穷大之间的整数 : [0, +∞) 。表示在新构造的字符串中重复了多少遍原字符串。重复次数不能为负数。重复次数必须小于 infinity,且长度不会大于最长的字符串。
function repeatStringNumTimes(string, times) { if (times > 0) return string.repeat(times); else return "";}repeatStringNumTimes("abc", 3);
您可以使用三元表达式作为 if/else 语句的快捷方式,如下所示:
function repeatStringNumTimes(string, times) { return times > 0 ? string.repeat(times) : "";}repeatStringNumTimes("abc", 3);
转载地址:http://www.css88.com/archives/7045
JavaScript面试题:重复输出一个给定的字符串
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。