数组方法实现(七)————数组方法splice()

来源:互联网 发布:网络渗透 pdf 编辑:程序博客网 时间:2024/06/04 18:13

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;    };
原创粉丝点击