字符串数组方法重写系列

其实这个东西吧,可以用来做一定的兼容处理,但更多是为了加深对语言本身的理解,毕竟原生方法更高效,锻炼一下你灵活运用语言的能力


(1)字符串repeat
String.prototype.repeat_num = function(n){
    return new Array(n+1).join(this + " ");
}
console.log("weidapao".repeat_num(3));

ES6引入了原生字符串方法 repeat()

(2)模拟Array的sort()

对字符串数组进行排序

var testArr = ['a','bb','ccc','dd','hhhhh','gggg'];
        console.log(testArr.sort(function(a,b){
            return a.length - b.length;
        }))

可以对数字与字符串数组进行排序

 Array.prototype.sort = function(fn){
              var arr = this;
              var len = this.length,temp;
            for(var i = 0;i < len -1;i++){
                var isSorted = true;
                for(var j = 0;j < len - i -1;j++){
                    if(fn(arr[j],arr[j+1]) > 0){
                        temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                        isSorted = false;
                    }
                }
                if(isSorted){
                    break;
                }
            }
            return arr;
        }

console.log([10,9,7,8,6,4,3,12,40].sort(function(a,b){
            return a - b; 
}))
(4)实现一个方法对以空格分隔的单词进行首字母转大写,直接写入字符串原型方法

能够优化的地方在于使用箭头函数,链式操作,然后注意箭头函数中this指向的问题,匿名函数中this指向调用者,是在执行时绑定,箭头函数中是在声明时绑定,始终指向函数的宿主对象

1. 不优化的方法
String.prototype.capitalize = function(){
            let strToArr = this.split(' ');  //将字符串通过空格转为数组
            let tempArr = [];
            for(let i = 0;i < strToArr.length;i++){
                tempArr[i] = strToArr[i].charAt(0).toUpperCase() + strToArr[i].slice(1);
            }
            return tempArr.join(' ');  //将数组还原为字符串
2. 使用ES5链式操作
String.prototype.capitalize = function(){
            var tempArr = this.split(' ').map(function(item,index){
                return item = item.charAt(0).toUpperCase() + item.slice(1);
            }).join(' ');
            return tempArr;
            }
3. 链式操作加箭头函数
String.prototype.capitalize = function(){
            let tempArr = this.split(' ').map((item,index)=>{
                return item = item.charAt(0).toUpperCase() + item.slice(1);
            }).join(' ');
            return tempArr;
        }
        console.log(introduce.capitalize()); //I Am Very Good At Hunter
4. 找到数组中的最大值
image.png

需要注意的点是第一种利用了apply传参为数组,第四种使用splice(-1)从最后以为删除了排序后的最大数,因为返回的包含了被删除项的数组,所以从第一位进行索引

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,231评论 0 4
  • php usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uni...
    思梦PHP阅读 1,984评论 1 24
  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 1,363评论 0 20
  • 美景 昨天午间小息时,就在单位的院子里,收获了大自然的馈赠——美景! ...
    笨笨姐妹阅读 228评论 3 6
  • 文/鸿运 品一杯岁月的酒 回味飞逝的春秋 酸甜苦辣样样有 喜怒哀乐伴恐忧 初春寒露依旧在 夏荷池塘任月游 深秋枫红...
    HONGYUNDANGTOU阅读 189评论 11 12