【Better Code】repeat
《JavaScript 框架设计》
版本1:
function repeat(target, n) {
return (new Array(n + 1)).join(target)
}
版本2:
function repeat(target, n) {
return Array.prototype.join.call({length: n + 1}, target)
}
版本3:(缓存)
var repeat = (function() {
var join = Array.prototype.join,
obj = {}
return function(target, n) {
obj.length = n + 1
return join.call(obj, target)
}
})();
版本4:(算法)
function repeat(target, n) {
var s = target,
total = []
while (n > 0) {
if (n % 2 == 1) total[total.length] = s
if (n == 1) break
s += s
n = n >> 1
}
return total.join('')
}
版本5:
function repeat(target, n) {
var s = target,
c = s.length * n
do {
s += s
} while (n = n >> 1)
s = s.substring(0, c)
return s
}
版本6:
function repeat(target, n) {
var s = target
total = ''
while (n > 0) {
if (n % 2 == 1) total += s
if (n == 1) break
s += s
n = n >> 1
}
return total
}
版本7:(递归)
function repeat(target, n) {
if (n == 1) {
return target
}
var s = repeat(target, Math.floor(n / 2))
s += s
if (n % 2) {
s += target
}
return s
}
【Better Code】repeat的更多相关文章
- 【Leet Code】Palindrome Number
Palindrome Number Total Accepted: 19369 Total Submissions: 66673My Submissions Determine whether an ...
- 【转】【VS Code】配置文件Launch及快捷键
Ctrl+shift+p,然后输入launch,点击第一个选项即可配置. 之后选择More即可 具体配置可修改为: { "version": "0.2.0", ...
- 【Gray Code】cpp
题目: The gray code is a binary numeral system where two successive values differ in only one bit. Giv ...
- 【繁星Code】如何在EF将实体注释写入数据库中
最近在项目中需要把各个字段的释义写到数据库中,该项目已经上线很长时间了,数据库中的字段没有上千也有上百个,要是一个项目一个项目打开然后再去找对应字段查看什么意思,估计要到明年过年了.由于项目中使用En ...
- -_-#【Better Code】
i++ 与 ++i 的性能区别 if (true) { console.log('hi') } if (!false) { console.log('hi~') } true && c ...
- -_-#【Better Code】throttle / debounce
浅谈javascript的函数节流 javascript函数的throttle和debounce throttle 疯狂触发事件,固定步调执行 debounce 疯狂触发事件,不会执行 var res ...
- 【Better Code】面向切面编程
用AOP改善JavaScript代码http://www.w3cfuns.com/thread-5597323-1-1.html
- -_-#【Better Code】字符串匹配
提高 web 应用性能之 JavaScript 性能调优
- 【Leet Code】String to Integer (atoi) ——常考类型题
String to Integer (atoi) Total Accepted: 15482 Total Submissions: 106043My Submissions Implement ato ...
随机推荐
- 修改weblogic部署的应用名称
通过weblogic管理后台console进行发布本地项目的时候,它会默认以WEB-INF的上一级目录作为访问路径,如,假如你的项目WEB-INF目录的上一层是WebRoot,那么发布后,访问的路径默 ...
- GUID vs INT Debate【转】
http://blogs.msdn.com/b/sqlserverfaq/archive/2010/05/27/guid-vs-int-debate.aspx I recently read a bl ...
- 常用HTML转义字符,
HTML字符实体(Character Entities),转义字符串(Escape Sequence) 为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,> ...
- NoSQL的三大基石(CAP、BASE和最终一致性)
CAP,BASE和最终一致性是NoSQL数据库存在的三大基石.而五分钟法则是内存数据存储了理论依据.这个是一切的源头. CAP C: Consistency 一致性 A: Availability 可 ...
- Google十大惊人产品
国外资讯网站BusinessInsider刊文细数了谷歌惊世骇俗的十大产品,范围从无人驾驶汽车到太空电梯再到高空风力发电,每一项都令人无限神往,充满未来感. 以下是谷歌十大惊人产品: 众所周知,谷歌并 ...
- getBoundingClientRect() 来获取页面元素的位置
getBoundingClientRect() 来获取页面元素的位置 document.documentElement.getBoundingClientRect 下面这是MSDN的解释: Syn ...
- 在OpenShift云空间上部署java web应用
在使用之前先来介绍下OpenShift空间 OpenShift是由红帽推出逇一款面向开源开发人员开放的平台即服务(PaaS). OpenShift通过为开发人员提供在语言.框架和云上的更多的选择,使开 ...
- shell变量的使用
转载请标明http://www.cnblogs.com/winifred-tang94/ shell环境中变量有三种类型: a. 环境变量:可以在shell脚本中直接利用“$环境变量名称”的形式引用 ...
- 在VS2010中打开VS2012的项目
修改工程文件来把VS2012的工程文件移植到VS2010中 首先是修改解决方案文件(.sln文件). 使用记事本打开,把里面的 Microsoft Visual Studio Solution Fil ...
- SpringMvc 单例
struts2的controller是多例,是因为其中有modeldriven将比如user 或者其他属性暴露出来,接受属性,特别是继承了actionsupport之后,fielderror的属性也会 ...