實現(xiàn)數(shù)組的原型方法

pop 方法

var arr=[1,7,4,9,3];
Array.prototype.ppop = function () {
    var arr = this;
    arr.length--;
    return arr;
};
console.log(arr.ppop());

push 方法

var arr = [1, 7, 4, 9, 3];

Array.prototype.ppush = function (value) {
    this[this.length] = value;
    return this;
};
console.log(arr.ppush(2));

slice 方法

var arr = [1, 7, 4, 9, 3];

Array.prototype.sslice = function () {
    
    var star = arguments[0] < 0 ? this.length + arguments[0] : arguments[0];
    var end = arguments[1] < 0 ? this.length + arguments[1] : arguments[1];
    var newArray = [];
    newArray.length = end - star;
    for (var i = star, j = 0; i < end; i++, j++) {
        newArray[j] = this[i];
    }
    return newArray;
};
console.log(arr.sslice(-3, -1));

splice方法

備注:這個實現(xiàn)比起 pop ,push 略有復(fù)雜,應(yīng)該是數(shù)組方法中最難的方法了。

var arr = [1, 7, 4, 9, 3];

Array.prototype.ssplice = function () {

    var dele = [];
    dele.length = arguments[1];
    var arr = this;
    //刪除指定元素
    for (var i = 0, key = arguments[0]; i < arguments[1]; i++, key++) {
        dele[i] = arr[key];
        arr[key] = arr[key + arguments[1]];
    }
    arr.length -= arguments[1];

    var addCount = arguments.length - 2;

    //移動位置為添加的元素預(yù)留位置
    arr.length += addCount;
    for (var move = arr.length - 1; move > arr.length - addCount - arguments[0]; move--) {
        arr[move] = arr[move - addCount];
    }

    //添加新元素
    for (var addArr = arguments[0], newNumber = 2; addArr < addCount + arguments[0]; addArr++, newNumber++) {
        arr[addArr] = arguments[newNumber];
    }

    return dele;
};

console.log(arr.ssplice(2, 2, 6, 4));
console.log(arr);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容