一、mySlice()
//mySplice 選取數(shù)組的的一部分,并返回一個(gè)新數(shù)組 Array.prototype.mySlice = function(start,end){ var arr = []; if(arguments.length == 0){ //如果不傳參數(shù),返回一個(gè)原數(shù)組副本 start = 0; end = this.length; }else{ //加工傳進(jìn)來(lái)start參數(shù),使他符合循環(huán)要求 start = Number(start); if(Number.isNaN(start)){ start = 0; }else if(start < 0){ if(start < -(this.length)){ start = -this.length; } start = start + this.length; } } if(arguments.length == 2){ //加工傳進(jìn)來(lái)end參數(shù),使他符合循環(huán)要求 end = Number(end); if(Number.isNaN(end)){ end = this.length; }else if(end < 0){ if(end < -(this.length)){ end = -this.length; } end = end + this.length; }else if(end > this.length){ end = this.length; } } if(end == undefined){ //如果沒(méi)傳end參數(shù),默認(rèn)設(shè)為數(shù)組長(zhǎng)度 end = this.length; } for(var i = Math.floor(start); i < Math.floor(end) ; i++){ arr.myPush(this[i]); } return arr; }二、mySplice()
//mySplice 從數(shù)組中添加或刪除元素 Array.prototype.mySplice = function(){ var index,howmany; if(arguments.length == 0){ this.length = 0; return this; }else if(arguments.length == 1){ //調(diào)整index和howmany的值 index = arguments[0]; if(index >= this.length){ index = this.length; }else if(index < -this.length){ index = 0; }else if(index < 0 && index >= -(this.length)){ index += this.length; } howmany = this.length - index; }else if(arguments.length >= 2){ //調(diào)整index和howmany的值 index = arguments[0]; if(index >= this.length){ index = this.length; }else if(index < -this.length){ index = 0; }else if(index < 0 && index >= -(this.length)){ index += this.length; } howmany = arguments[1]; if(index+howmany >= this.length){ howmany = this.length - index; } } var t1 = index; var length = arguments.length - 2; var arr = []; for(var i = 0 ; i < howmany ; i++){ // 返回刪除的數(shù)組 arr[i] = this[t1++]; } var t2 = index; for(var i = t2 + howmany ; i < this.length ; i++){ //刪除操作后的數(shù)組 this[t2++] = this[i]; } this.length = this.length - howmany; if(arguments.length > 2){ //插入數(shù) var lastLength = this.length; var leap = lastLength - index; var arIndexRigtht = arguments.length - 1; this.length = this.length + arguments.length - 2; for(var j = this.length - 1 ; j >= index ; j--){ if(leap > 0){ this[j] = this[j - arguments.length + 2]; leap = leap -1 ; }else{ this[j] = arguments[arIndexRigtht--]; } } } return arr; }
好吧,這兩個(gè)方法感覺(jué)都寫(xiě)的很臃腫,日后能力提升了再修改吧。當(dāng)然如果能提好的建議那就再好不過(guò)了。 ^_^
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/94867.html
摘要:數(shù)組的原型上有一個(gè)方法叫做給不同的參數(shù)組合會(huì)返回不同的結(jié)果,由于組合非常多,這里研究一下不同組合的結(jié)果并基于原型鏈對(duì)該方法進(jìn)行仿寫(xiě)考慮情況為負(fù)數(shù),為負(fù)數(shù),超出有效長(zhǎng)度了,非有效數(shù)字源碼如下不想看源碼的請(qǐng)直接看最下面的結(jié)果處理沒(méi)有參數(shù)的情況處 數(shù)組的原型上有一個(gè)方法叫做slice,給不同的參數(shù)組合會(huì)返回不同的結(jié)果,由于組合非常多,這里研究一下不同組合的結(jié)果并基于原型鏈對(duì)該方法進(jìn)行仿寫(xiě)考慮...
摘要:進(jìn)階第一章作用域深入和面向?qū)ο箢A(yù)解釋全局作用域當(dāng)瀏覽器加載頁(yè)面的時(shí)候,提供了一個(gè)全局代碼執(zhí)行的環(huán)境預(yù)解釋變量提升在當(dāng)前的作用域中,代碼執(zhí)行之前,瀏覽器首先會(huì)默認(rèn)的吧所有帶有和的進(jìn)行提前聲明或定義理解聲明和定義聲明告訴瀏覽器在全局作用域中有 JS進(jìn)階 第一章作用域深入和面向?qū)ο?預(yù)解釋 1、全局作用域:當(dāng)瀏覽器加載HTML頁(yè)面的時(shí)候,提供了一個(gè)全局js代碼執(zhí)行的環(huán)境 2、預(yù)解釋?zhuān)ㄗ兞刻嵘?..
摘要:前端基本功示例代碼一點(diǎn)這里前端基本功示例代碼二點(diǎn)這里一像素偽類(lèi)實(shí)現(xiàn)對(duì)于老項(xiàng)目,有沒(méi)有什么辦法能兼容的尷尬問(wèn)題了,個(gè)人認(rèn)為偽類(lèi)是比較完美的方法了。 前端基本功-示例代碼 (一) 點(diǎn)這里前端基本功-示例代碼 (二) 點(diǎn)這里 1.一像素 偽類(lèi) + transform 實(shí)現(xiàn)對(duì)于老項(xiàng)目,有沒(méi)有什么辦法能兼容1px的尷尬問(wèn)題了,個(gè)人認(rèn)為偽類(lèi)+transform是比較完美的方法了。 原理是把原先元素...
摘要:前端基本功示例代碼一點(diǎn)這里前端基本功示例代碼二點(diǎn)這里一像素偽類(lèi)實(shí)現(xiàn)對(duì)于老項(xiàng)目,有沒(méi)有什么辦法能兼容的尷尬問(wèn)題了,個(gè)人認(rèn)為偽類(lèi)是比較完美的方法了。 前端基本功-示例代碼 (一) 點(diǎn)這里前端基本功-示例代碼 (二) 點(diǎn)這里 1.一像素 偽類(lèi) + transform 實(shí)現(xiàn)對(duì)于老項(xiàng)目,有沒(méi)有什么辦法能兼容1px的尷尬問(wèn)題了,個(gè)人認(rèn)為偽類(lèi)+transform是比較完美的方法了。 原理是把原先元素...
摘要:一數(shù)組每個(gè)元素都執(zhí)行一次回調(diào)函數(shù)二檢測(cè)數(shù)值元素的每個(gè)元素是否都符合條件三檢測(cè)數(shù)組元素中是否有元素符合指定條件四檢測(cè)數(shù)值元素,并返回符合條件所有元素的數(shù)組五將數(shù)組元素計(jì)算為一個(gè)值從左到右以上回調(diào)函數(shù)只是手寫(xiě)簡(jiǎn)化版,無(wú)法傳參數(shù),若有誤或建議,請(qǐng) 一、myForEach //myForeach 數(shù)組每個(gè)元素都執(zhí)行一次回調(diào)函數(shù) Array.prototype.myForEach = fu...
閱讀 3397·2021-11-24 09:38
閱讀 1393·2021-11-22 15:08
閱讀 1468·2021-09-29 09:35
閱讀 486·2021-09-02 15:11
閱讀 1311·2019-08-30 12:55
閱讀 393·2019-08-29 17:16
閱讀 499·2019-08-29 11:30
閱讀 424·2019-08-26 13:23