splice無疑是最強大的數組方法,出於興趣,現在使用js來實現splice方法,實現之前必須了解splice方法的功能是怎么樣的
功能需求:刪除,插入,替換,而這三個功能是通過改變函數參數來實現的
兩個參數情況(刪除):第一個參數表示要刪除項的索引,第二個參數表示要刪除的項數,
三個以上包括三個參數情況(插入和替換):第一參數表示起始位置,第二個參數表示要刪除的項數(該項為0的話為插入,大於0的話為替換),第三個及以后的參數表示要插入的項。
實現思路描述:要理解js函數中的參數的概念,參數在內部是用一個數組來表示的,在函數體內是通過arguments對象來訪問參數數組的。所以可以通過arguments來實現此方法。
實現代碼:
<script type="text/javascript"> var arr=[1,2,3,4,5,6,7,8,9]; //使用js實現splice方法,寫的比較粗糙,對參數判斷不夠細膩 function jsSplice(){ var index=arguments[0]; var num=arguments[1]; var len=arguments.length; var result=[],content=[]; //刪除 if(len==2){ result=arr.slice(0,index).concat(arr.slice(index+num,arr.length)); console.log(result) }else if(len>2){ for(var i=2;i<len;i++){ content.push(arguments[i]); } //插入 if(num==0){ result=arr.slice(0,index).concat(content,arr.slice(index,arr.length)); console.log(result); //替換 }else if(num>0){ result=arr.slice(0,index).concat(content,arr.slice(index+num,arr.length)); console.log(result); } //參數個數不對,返回原數組 }else{ console.log(arr) } //刪除第二項 //jsSplice(1,1); //在數組第二項插入兩項100,200 //jsSplice(1,0,100,200); //把數組第二項替換為三項值為:1000,2000,3000 jsSplice(1,1,1000,2000,3000); } </script>
測試結果(只測試替換功能,其余自行測試):