实现数组的原型方法

作者: 肆意木 | 来源:发表于2017-07-31 17:21 被阅读31次

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方法

备注:这个实现比起 pop ,push 略有复杂,应该是数组方法中最难的方法了。

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;

    //移动位置为添加的元素预留位置
    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);

相关文章

  • 数组方法

    数组的方法有数组原型方法,也有从object对象继承来的方法,这里我们只介绍数组的原型方法,数组原型方法主要有以下...

  • 实现数组的原型方法

    pop 方法 push 方法 slice 方法 splice方法 备注:这个实现比起 pop ,push 略有复杂...

  • 类数组转化为数组

    模拟内置slice实现数组克隆 优化类数组转数组的代码:借用数组原型上的slice方法,将arguments转化为...

  • js数组去重

    这里的实现方法都是整理以往的实现方式,并将其在数组的原型上实现,并非个人探索 1、遍历数组法 描述:新建一新数组,...

  • js数组的方法

    数组方法 下面开始介绍数组的方法,数组的方法有数组原型方法,也有从object对象继承来的方法,这里我们只介绍数组...

  • JS数组常用方法大全

    数组的方法有数组原型方法,也有从object对象继承来的方法,下面就介绍一下数组常用方法:join() --...

  • JavaScript数组的原型方法

    上章节讲完JS数组的私有方法,这个章节我们继续讲解数组的原型方法。 Array的原型属性 一、Array.conc...

  • ES6-Array .from() and .of()

    1.from()不是数组原型上的方法 2..of()创建数组

  • Javascript基础进阶(十三)在内置类上扩展方法

    基于内置类的原型扩展方法 基于内置类的原型扩展方法以数组去重为例:

  • JS 数组扁平化的5种方式

    什么是数组扁平化 数组扁平化是指将一个多维数组变为一维数组 数据准备 实现方法一 实现方法二 实现方法三 实现方法...

网友评论

    本文标题:实现数组的原型方法

    本文链接:https://www.haomeiwen.com/subject/nuphlxtx.html