《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的更多相关文章

  1. 【Leet Code】Palindrome Number

    Palindrome Number Total Accepted: 19369 Total Submissions: 66673My Submissions Determine whether an ...

  2. 【转】【VS Code】配置文件Launch及快捷键

     Ctrl+shift+p,然后输入launch,点击第一个选项即可配置. 之后选择More即可 具体配置可修改为: { "version": "0.2.0", ...

  3. 【Gray Code】cpp

    题目: The gray code is a binary numeral system where two successive values differ in only one bit. Giv ...

  4. 【繁星Code】如何在EF将实体注释写入数据库中

    最近在项目中需要把各个字段的释义写到数据库中,该项目已经上线很长时间了,数据库中的字段没有上千也有上百个,要是一个项目一个项目打开然后再去找对应字段查看什么意思,估计要到明年过年了.由于项目中使用En ...

  5. -_-#【Better Code】

    i++ 与 ++i 的性能区别 if (true) { console.log('hi') } if (!false) { console.log('hi~') } true && c ...

  6. -_-#【Better Code】throttle / debounce

    浅谈javascript的函数节流 javascript函数的throttle和debounce throttle 疯狂触发事件,固定步调执行 debounce 疯狂触发事件,不会执行 var res ...

  7. 【Better Code】面向切面编程

    用AOP改善JavaScript代码http://www.w3cfuns.com/thread-5597323-1-1.html

  8. -_-#【Better Code】字符串匹配

    提高 web 应用性能之 JavaScript 性能调优

  9. 【Leet Code】String to Integer (atoi) ——常考类型题

    String to Integer (atoi) Total Accepted: 15482 Total Submissions: 106043My Submissions Implement ato ...

随机推荐

  1. soap base64 调用

      xsd__base64Binary data;     data.__ptr = (unsigned char*) soap_malloc(_soapProxy,picLen);     data ...

  2. ace-下载-安装

    安装ACE 1.获取安装包 到ACE的官方网站http://www.cs.wustl.edu/~schmidt/ACE.html或者http://riverace.com/index.htm下载最新版 ...

  3. 使用反射来编写实体类的XML

    前言: 开发过程中经常需要返回某实体类的列表,公司通常用的都是XML格式的接口,小猪借鉴了公司前辈留下的代码一直是类似这么写的: public static string GetXMLList(ILi ...

  4. 选择最适合你的Linux学习方法

    我们知道Linux只是一个内核,现在的Linux操作系统底层都是用这个内核,包括Android手机,所以Linux操作系统其实是将Linux内核与应用软件做一个打包,我们称之为Linux发行版.现在比 ...

  5. 利用百度地图开源sdk获取地址信息。

    注册百度开发者帐号,下载相关sdk 添加权限: 添加百度注册访问应用(AK)码 添加源代码文件到libs文件: 代码如下: package com.lixu.baidu_gps; import com ...

  6. S1 : 传递参数

    ECMAScript 中所有函数的参数都是按值传递的.也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样.基本类型值的传递如同基本类型变量的复制一样,而引用类型值的传 ...

  7. bzoj 2730: [HNOI2012]矿场搭建

    #include<cstdio> #include<cstring> #include<iostream> #define M 508 using namespac ...

  8. ncs安装及初次运行

    Tail-f NCS 作为网络配置程序和基础设备之间的接口,能够展现各种服务,修改各开发商不相同的设备配置,同时能及时同步网络设备状态到cdb(configuration database,配置数据库 ...

  9. ROS的文件系统 (二)

    ROS的文件系统的基本概念, ROS文件系统中的两个最基本的概念:Package和Manifest,即包和清单文件. Package是组织ROS代码的最基本单位,每一个Package都可以包括库文件, ...

  10. source 命令与“ . ”点命令

    http://wenku.baidu.com/link?url=r3_WjJwQziv5wooIiatYbIMotPHcop56ZyakNGFor5DgJLQD-orAwVmOwp80RAnJ3tRD ...