數組方法實現(七)————數組方法splice()


splice()方法

splice(),主要用途是向數組中部插入項。

  1. 刪除: 可以刪除任意數量的項
    只需指定2個參數:要刪除的第一項的位置和要刪除的項數。

  2. 插入:可以向指定的位置插入任意數量的項
    只需提供三個參數:起始位置、0(要刪除的項數)、要插入的項。

  3. 替換: 可以向指定位置插入任意數量的項,且同時刪除任意數量的項。
    只需指定三個參數:使其位置, 要刪除的項數和要插入的任意數量的項。

注:splice()方法始終都返回一個數組,該數組中包含從原始數組中刪除的項(如果沒有刪除任何項,則返回空數組)。

    Array.prototype.copySplice =function() {  
var result = [],
len = this.length,
startIndex = arguments[0], //起始位置
deleteNum = arguments[1], //要刪除的項數
insertNum = arguments.length - 2, //要插入的項數
leftArr = [],
rightArr = [];

// 第一、第二個參數是負數的話,直接返回空。
if( startIndex < 0 || deleteNum < 0) {
return result;
}

// 1.刪除功能——————————————返回刪除的數組項以及刪除后剩余的數組項
for(var i = 0; i < deleteNum; i++) {
result[i] = this[startIndex + i];
}
for(var i = 0; i < len - deleteNum - startIndex; i++) {
this[startIndex + i] = this[startIndex + deleteNum + i];
}
this.length = len - deleteNum;

// 參數長度小於3個的話,到這里結束,否則繼續下面操作
if(insertNum == 0) {
return result;
}

// 2. 插入和替換功能
// 2.1分割數組——————分割點startIndex
for(var i = 0; i < len - deleteNum; i++) {
if(i < startIndex) {
leftArr[leftArr.length] = this[i];
}
else {
rightArr[rightArr.length] = this[i];
}
}
rightArr.length = len - startIndex - deleteNum; // 更新rightArr數組長度

// 2.2 插入數組項
for(var i = 0; i < insertNum; i++) {
leftArr[startIndex + i] = arguments[2 + i];
}
// console.log('leftArr的值是: ' + leftArr + ' rightArr的值是: ' + rightArr);

// 2.3 將左右數組連接起來
for(var i = 0; i < len - deleteNum + insertNum; i++) {
if(i < startIndex + insertNum) {
this[i] = leftArr[i];
}
else {
this[i] = rightArr[i - startIndex - insertNum];
}
}

return result;
};


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com